KR20110110088A - 관리되는 네트워크를 통해 계층-2에서의 패킷 수집 및 단편화 - Google Patents

관리되는 네트워크를 통해 계층-2에서의 패킷 수집 및 단편화 Download PDF

Info

Publication number
KR20110110088A
KR20110110088A KR1020117007389A KR20117007389A KR20110110088A KR 20110110088 A KR20110110088 A KR 20110110088A KR 1020117007389 A KR1020117007389 A KR 1020117007389A KR 20117007389 A KR20117007389 A KR 20117007389A KR 20110110088 A KR20110110088 A KR 20110110088A
Authority
KR
South Korea
Prior art keywords
packets
packet
receive
descriptor
queue
Prior art date
Application number
KR1020117007389A
Other languages
English (en)
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 KR20110110088A publication Critical patent/KR20110110088A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9026Single buffer per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

제 1 프로토콜에 따라 제 1 네트워크 내의 노드로부터 패킷들을 수신하기 위한 방법 및 장치가 제공된다. 각각의 수신된 패킷과 연관되는 디스크립터는 수신된 패킷을 저장하는 직접 메모리 액세스(DMA) 제어기에 의해 판독된다. 제어 가능 파라미터에 대한 값은 제 2 프로토콜에 따라 동작하는 제 2 네트워크를 통해 수신된 패킷의 콘텐츠를 효율적으로 통신하기 위해 선택된다. 그리고나서 수신된 패킷에서의 정보는 새로 형성되는 패킷들로 조직되고, 새로 형성된 패킷들의 크기로 인해 상기 패킷들은 제 2 프로토콜에서 네트워크를 통해 효율적으로 통신하게 된다. 새로 형성된 패킷들은 송신 라인 버퍼에 저장되고 프로토콜 디스크립터와 연관된다. 프로토콜 디스크립터는 정보를 송신 제어기에 제공하고, 제 1 프로토콜을 효율적으로 이용하기 위해 송신 제어기로 하여금 송신 라인 버퍼로부터의 패킷들을 선택하고 수집하도록 한다.

Description

관리되는 네트워크를 통해 계층-2에서의 패킷 수집 및 단편화{PACKET AGGREGATION AND FRAGMENTATION AT LAYER-2 OVER A MANAGED NETWORK}
상호 관련 출원들
본 출원은 2008년 12월 24일에 출원되고 본원에 참조로써 통합되어 있는 "Packet aggregation and fragmentation at layer-2 over a managed network"라는 명칭의 일련 번호 12/343,941의 비-예비 특허 출원으로부터 우선권을 주장한다.
개시되어 있는 방법 및 장치는 네트워크 통신들에 관한 것으로서, 특히 일부 실시예들은 홈 엔터테인먼트(home entertainment) 네트워크의 패킷(packet)들의 효율적인 통신에 관한 것이다.
홈 엔터테인먼트 컴포넌트(component)들이 홈 엔터테인먼트 네트워크를 통해 서로 통신하는 것이 점차 바람직해지고 있다. 그와 같은 통신들은 영화들, 음악들, 인터넷 콘텐츠들 등뿐만 아니라 전화 서비스들과 같은 엔터테인먼트 콘텐츠가 하나의 특정 홈 엔터테인먼트 디바이스로 격리되는 것보다 오히려 디바이스들의 네트워크에 의해 처리되는 것을 가능하게 한다.
가정 내에 홈 엔터테인먼트 네트워크를 설정하도록 채택되었던 하나의 특정한 표준은 MoCA(Multi-media over Coaxial Alliance)에 의해 설정된 산업 표준이다. MoCA 표준으로 인해 컴포넌트들(때로는 '노드(node)들'로 칭해진다)은 노드들을 접속하는 매체로서 동축 케이블을 이용하는 고속 네트워크를 통해 서로 통신하고 콘텐츠를 공유하는 것이 가능하다. 네트워크는 "네트워크 제어기(Network Controller"(NC)의 기능을 실행하도록 선택되는 하나의 노드에 의해 설정된다. NC 기능들은 네트워크의 노드들 모두를 링크(link)하는 단일 동축 케이블을 통해 통신들을 조직하고 중재하는 것을 포함한다. 매체(즉, 동축 케이블)이 공유되기 때문에, MoCA 표준은 어떤 노드가 임의의 특정한 순간에 적시에 매체를 제어할 것인지를 NC가 결정하는 중재 방식(arbitration scheme)을 설정한다.
이 방식에 따르면, NC는 매체를 통해 모든 통신들을 스케줄링(scheduling)할 것이다. 이 스케줄은 매체 액세스 플랜(Media Access Plan: MAP)으로 칭해지는 것으로 네트워크의 노드들 각각에 전달된다. MAP들은 정기적 스케줄링 기반으로 NC에 의해 송신된다. 각각의 MAP는 MAP 사이클(cycle)의 시작 시에 배치된다. MAP는 이후의 MAP 사이클 내의 각각의 시간 간격에서 노드가 어떤 것을 송신하고 있을지를 표시한다.
도 1은 Map들(201, 202) 및 Map 사이클들(203, 205) 사이의 타이밍 관계(timing relationship)를 도시한 타이밍도이다. MAP 사이클(205)은 이전에 송신된 MAP(201)의 제어하에 있는 채널들 상에서의 통신 활동으로 정의된다. 따라서, 각각의 MAP(201)는 다음 MAP 사이클(205) 동안의 통신 활동의 모두를 스케줄링한다(단 하나의 그러한 "다음 MAP 사이클"(205)이 도 1에 도시된다). 다음 MAP(202)는 이전 MAP(201)의 스케줄링 제어 하에 다음 MAP 사이클(205) 동안 송신된다. 따라서, MAP(201)는 다음 MAP 사이클(205)에서 송신될 각각의 패킷에 대한 다음의 정보를 결정한다: i) 패킷 시작 시간; ii) 패킷 길이; iii) 소스 노드; 및 iv) 목적지 노드(들).
MAP(201, 202)가 스케줄링을 담당하고 있는 하나의 특정한 유형의 패킷은 예약 요청(reservation request : RR)(207, 209, 211)이다. 6개의 그와 같은 RR들은 제 1 RR(207)로 시작하고 최종 RR(209)로 끝나는, 도 1의 제 1 MAP 사이클(203)에 도시된다. 하나의 RR(211)은 제 2 MAP 사이클(205)에 도시된다. RR들(207, 209, 211)은 클라이언트 노드(client node)에 의해 송신되어 클라이언트 노드는 자신이 송신되고자 원하는 패킷들을 가지고 있음을 표시하고 따라서 NC는 클라이언트 노드가 상기 패킷들을 송신할 때 후속 MAP 동안 시간을 스케줄링하라고 요청한다. 따라서, 클라이언트 노드가 송신될 정보를 가진다면, 클라이언트 노드는 우선 클라이언트 노드가 RR(207, 209, 211)을 송신할 때 시간을 할당하기 위해 NC를 대기해야만 한다. 일단 클라이언트 노드가 RR(207, 209, 211)를 송신할 수 있는 시간을 NC가 할당하였다면, 클라이언트 노드는 할당되는 시간에(예를 들어 패킷 시작 시간에 그리고 RR(211)에 대한 MAP(201)에 의해 표시되는 패킷 길이 동안) RR(207, 209, 211)을 NC에 전달한다.
RR(207, 209)은 클라이언트 노드로 하여금 클라이언트 노드가 송신하고자 원하는 데이터 패킷들을 클라이언트 자신이 가지고 있음을 NC에 통신하도록 한다. 더욱이, RR(207, 209)는 상기 데이터 패킷들에 대한 연관된 목적지 노드(들), 패킷 실이, 패킷 우선순위(priority) 등을 표시한다. 더 높은 우선순위를 갖는 패킷들은 더 낮은 우선순위를 패킷들 이전에 스케줄링될 것이다. NC는 이 정보를 이용하여 클라이언트 노드는 자신이 송신하고자 원하는 상기 데이터 패킷들을 송신할 수 있는 시간들을 스케줄링한다. 그리고나서 다음 MAP 사이클(205) 동안 MAP(201)를 생성하고 송신함으로써 스케줄링하는 NC는 전송된다.
일단 클라이언트 노드로부터의 RR이 승인되었다면, 클라이언트 노드는 NC에 의해 할당되는 시간 동안 통신될 데이터 패킷들을 송신할 것이다. 데이터 패킷들은 데이터 패킷의 최대 길이를 지시하는 특정 포맷, 및 데이터 패킷의 헤더(header) 또는 전송 에러 정정 코드와 같은 임의의 다른 오버헤드(overhead) 정보의 콘텐츠를 갖는다. 데이터 패킷이 더 길수록, 매체는 더욱 효율적으로 이용될 것이다. 즉, 데이터 패킷 내로 로딩되는 데이터가 더 많을수록, 데이터 대 오버헤드의 비가 더 크다. 데이터 대 오버헤드의 비가 더 클수록, 제공된 시간량 내에 매체를 통해 더 많은 데이터가 통신될 수 있으므로(즉, 매체 효율이 더 크다), 효율이 측정되는 시간량이 패킷 길이에 비해 상대적으로 더 길다고 가정한다.
그러나, 특정한 클라이언트 노드가 송신해야만 하는 데이터는 상이한 자원 애플리케이션으로부터 올 수 있고, 상이한 패킷 크기들을 가지며, 상이한 목적지들을 갖고, 할당된 상이한 우선순위들을 가질 수 있다. 따라서, 상이한 자원 애플리케이션들로부터 내부로 들어오는 상이한 패킷들을 분류하는 것은 성가시며 일반적으로 네트워크의 비효율성을 가중한다. 그러므로, 상이한 소스 애플리케이션으로부터 MoCA 네트워크와 같이 정의된 패킷 오버헤드 및 최대 패킷 크기를 갖는 네트워크를 통해 송신되어야 할 패킷들에게 정보를 할당할 효율적이고 비교적 간단한 방식이 필요하다.
본 문서는 제 1 네트워크 내에 있는 노드로부터 패킷들을 수신하기 위한 방법 및 장치를 개시하고, 수신된 패킷들은 제 1 프로토콜에 따라 조직된다. 각각의 수신된 패킷과 연관되는 디스크립터(descriptor)는 수신된 패킷을 저장하는 직접 메모리 액세스(direct memory access: DMA) 제어기에 의해 판독되는 수신된 패킷에 대한 정보를 포함한다.
제어 가능 파라미터에 대한 값이 선택된다. 제어 가능 파라미터는 제 2 프로토콜에 따라 동작하는 제 2 네트워크를 통해 효율적으로 통신되는 패킷들의 크기를 결정한다. 파라미터는 자동화된 프로세스를 이용하거나 수동으로 애플리케이션에 의해 선택될 수 있다. 어느 경우이든지, 파라미터는 바람직하게도 수신되는 패킷의 크기 및 수신된 패킷에서 통신되는 정보의 유형에 기초하여 선택된다. 그리고나서 수신된 패킷 내의 정보는 새로 형성되는 패킷들 내에 조직되고, 새로 형성되는 패킷들의 크기로 인해 상기 패킷들은 제 2 프로토콜에서 네트워크를 통해 효율적으로 통신하게 된다. 제어 가능 파라미터의 값에 따라, 새로 형성되는 패킷들의 크기는 수신된 패킷들의 크기와 동일하거나 수신된 패킷들보다 더 클 수 있다.
새로 형성되는 패킷들은 송신 라인 버퍼에 저장되고 초기에 동일한 서비스 패킷 내에 있었던 새로 형성되는 패킷들 모두는 프로토콜 디스프립터와 연관된다. 프로토콜 디스크립터는 정보를 송신 제어기에 제공하여 송신 제어기로 하여금 제 2 프로토콜을 효율적으로 이용하기 위해서 송신 라인 버퍼로부터 패킷들을 선택하고 수집하도록 한다.
하나 이상의 다양한 실시예들에 따른 개시된 방법 및 장치는 다음 도면들을 참조하여 설명된다.
도 1은 Map들 및 Map 사이클들 사이의 타이밍 관계를 도시한 타이밍 도;
도 2는 개시된 방법 및 장치를 포함하는 시스템의 블록도;
도 3은 개시된 방법 및 장치에서 이용되는 공유 메모리의 8개의 에어리어(area)들의 도면;
도 4는 GEPHY 수신 버퍼 큐(Queue) 및 GEPHY 수신 디스크립터 큐(Descriptor Queue) 사이의 관계도;
도 5는 개시된 방법 및 장치의 하나의 실시예에 따른 수신 디스크립터의 포맷 및 콘텐츠를 도시한 도면.
도면들은 단지 설명의 목적을 위해서 제공되고 다만 개시된 방법 및 장치의 일부 실시예들의 예들을 도시한다. 이것들은 청구된 발명의 폭, 범위, 응용 가능성을 제한하는 것으로 고려되어서는 안 된다. 이는 명료성 및 설명의 용이함을 위해 상기 도면들이 반드시 축적대로 도시될 필요가 없음이 주목되어야 한다.
네트워크 내에서 통신을 제어하기 위한 방법 및 장치게 본원에 개시된다. 다음의 설명은 주로 MoCA 표준에 기초하는 홈 엔터테인먼트 네트워크를 언급한다. 그러나, 개시된 방법 및 장치는 매체를 효율적으로 이용하는 것이 바람직한 임의의 통신 네트워크에서 양호하게 이용될 수 있음이 당업자에 의해 이해될 것이다.
도 2는 개시된 방법 및 장치를 포함하는 시스템의 블록도이다. MoCA 네트워크의 제 1 노드(102) 및 제 2 노드(104)는 동축 케이블(106)("매체")에 의해 접속된다. 각각의 노드(102, 104)는 본질적으로 동일하다. 따라서, 단 하나의 노드(102)만이 여기서 상세하게 설명될 것이다. 개시된 방법 및 장치의 하나의 실시예에 따르면, 노드(102)는 메모리로부터의 명령들을 수행하는 기가바이트 이더넷 물리 계층 제어기(Gigabyte Ethernet Physical layer Controller : GEPHY)(108)와 같은 물리 계층 제어기를 포함한다. 하나의 실시예에서, GEPHY는 1 기가바이트/초(Gb/s), 100 메가바이트/초(Mb/s), 10 Mb/s, 및 다른 속도에 대한 기원을 포함한다. 노드(102)는 또한 외부 호스트 인터페이스(External Host Interface: 110)를 포함한다. 노드(102)는 더욱이: MoCA 중앙 처리 장치 명령/데이터 메모리(112)(MoCA CPU I/D 메모리와 같은 네트워크 중앙 처리 장치 명령/데이터 메모리; MoCA CPU(114)와 같은 네트워크 CPU; MoCA 포트(116)와 같은 네트워크 포트 및 공유 메모리(118)를 더 포함한다. 이 컴포넌트들의 각각은 시스템 버스(120)에 의해 서로 연결된다.
도 2에 도시되는 바와 같이, 공유 메모리는 네 버퍼들로 분할된다; (1) GEPHY 수신 버퍼(134), (2) GEPHY 송신 버퍼(135), (3) 송신 라인 버퍼(150), 및 (4) 수신 라인 버퍼(151). 각각의 버퍼(134, 135, 150, 151)는 두 부분들로 더 분할된다: (1) 디스크립터 큐(Descriptor Queue) 및 (2) 데이터 버퍼 큐. 도 3은 공유 메모리(118)의 모두 8개의 에어리어들의 도면이다(즉, 네 버퍼들 중 각각의 버퍼에서의 각각의 디스크립터 및 큐). 동일한 버퍼와 연관되는 디스크립터 큐 및 데이터 버퍼 큐가 공유 메모리(118)에서 인접하게 도시되지 않음이 주목되어야 한다. 실제로, 8개의 에어리어들 각각이 도 3에서 블록으로 도시될지라도, 개시된 방법 및 장치의 하나의 실시예에서, 각각의 디스크립터 큐 및 데이터 버퍼 큐의 엔트리(entry)들은 연속해서 저장되지 않는다. 오히려, 엔트리들은 공유 메모리(118) 전체에 걸쳐 흩어져 있으며 서로 링크된다. 공유 메모리(118)의 8개의 에어리어들은:
(1) GEPHY 수신 디스크립터 큐(301);
(2) GEPHY 송신 디스크립터 큐(303);
(3) 송신 라인 버퍼 디스크립터(305);
(4) 수신 라인 버퍼 디스크립터(307);
(5) GEPHY 수신 버퍼 큐(309);
(6) GEPHY 송신 버퍼 큐(311);
(7) 수신 라인 버퍼 엔트리 큐(313);
(8) 송신 라인 버퍼 엔트리 큐(315).
공유 메모리는 많은 상이한 방법들로 조직되어서 개시된 방법 및 장치의 목적들이 달성될 수 있음을 당업자는 이해할 것이다. 개시된 방법 및 장치의 하나의 실시예에 따르면, 공유 메모리에서 각각의 데이터 버퍼 큐 및 디스크립터 큐 내에 저장되는 정보는 공유 메모리 내의 임의의 위치에 배치될 수 있고, 포인터(pointer)들은 정보를 어드레스하는데 이용될 수 있다. 그러나, 개시된 방법 및 장치의 설명을 이해시키는데 도움을 주기 위해 본원에서는 하나의 특정한 구성이 제공된다.
노드(102)의 동작에 대한 간략한 개요가 노드(102)의 각각의 컴포넌트의 상세한 기능들의 부가적인 설명들에 기초들을 제공할 것이다. 상술한 바와 같이, 노드(102)는 매체(106)를 통해 다은 노드(104)와 연결된다. 게다가, 노드(102)는 GMII/MII 인터페이스(122)와 같은 외부 네트워크 인터페이스를 통해, 이더넷 네트워크와 같은 외부 네트워크에 연결된다. 서비스 패킷들은 외부 네트워크 프로세서(124)로부터 노드(102) 내의 GEPHY 제어기(108)로 통신된다. 외부 네트워크가 이더넷 네트워크인 경우, 서비스 패킷들은 이더넷 패킷들이고 외부 네트워크 프로세서(124)는 GMII/MII 인터페이스를 갖는 네트워크 프로세스이다. 서비스 패킷들은 데이터 경로(126)를 통해 관리 인터페이스(128)를 통하여 통신하는 제어 정보와 통신한다.
서비스 패킷들이 소스 애플리케이션들로부터 네트워크 프로세서(124)를 통해 수신될 때, 서비스 패킷들은 공유 메모리(118) 내에 있는 GEPHY 수신 버퍼 큐(309) 내에 초기에 저장된다. 그리고나서 서비스 패킷들은 송신 라인 버퍼 엔트리 큐(Transmit Line Buffer Entry Queue: TLBEQ)(315)로 이동된다. TLBEQ는 송신 라인 버퍼 디스크립터(305)에 의해 정의된다. 하나의 실시예에서, TLBEQ(315)는 또한 공유 메모리(118) 내에 있다. 서비스 패킷들을 TLBEQ(315)로 이동시킴으로써, 서비스 패킷들은 패킷 데이터 유닛(Packet Data Unit: PDU)들로 칭해지는 미리 결정된 크기의 패킷들로 분할될 수 있다. 하나의 실시예에서, PDU들은 모두 크기가 동일하다. PDU들의 크기는 선택적으로 고정된다. 이 설명의 목적을 위한 "선택적으로 고정되는(selectively fixed)"은 PDU들의 크기가 노드가 관여하고 있는 특정한 애플리케이션에 대해 선택될 수 있고 상기 애플리케이션에 대해 고정된 채로 남아 있음을 의미한다. 노드가 관여하고 있는 애플리케이션에 적합하도록 선택될 수 있는 일정한 크기의 PDU들을 가짐으로써, 아래 제공되는 세목들로부터 더욱 명확해지는 바와 같이, 공유 메모리의 효율이 최적화되고 노드들(102, 104) 사이의 네트워크를 통한 패킷들의 송신이 더욱 효율적이게 된다.
서비스 패킷이 PDU 크기와 동일한 크기(또는 더 작은)일 때, 전체 서비스 패킷은 TLBEQ(315)의 하나의 엔트리(319) 내에 하나의 PDU로 저장될 것이다. 대안적으로, 서비스 패킷의 크기가 하나의 PDU보다 더 클 때, 서비스 패킷은 다수의 PDU들로 분할되고, 각각의 PDU는 TLBEQ(315)에 있는 하나의 엔트리(319) 내에 저장된다. 하나보다 많은 PDU에 저장하기 위해 서비스 패킷을 분할하는 프로세스는 단편화(fragmentation)로 칭해진다.
각각의 서비스 패킷은 하나의 프로토콜 디스크립터(PD)와 연관된다. 따라서, 서비스 패킷이 다수의 PDU들로 분할되었다면, 하나의 서비스 패킷으로부터 분할된 PDU들 모두에 다해 하나의 PD가 존재한다. 서비스 패킷들이 어떻게 분할되고 TLBEQ(315)에 저장되는지에 과한 세부사항들이 아래에 제공될 것이다.
PDU의 우선순위 및 PDU가 송신되어야 하는 목적지 노드와 같은 공통 특성들을 갖는 PDU들은 이후에 송신 패킷으로 수집되고 MoCA 네트워크를 통해 송신된다. 노드가 관여하고 있는 각각의 애플리케이션에 대한 PDU들의 크기를 적절하게 선택함으로써 PDU들은 효율적으로 수집되는 것이 가능할 것이다. PDU들을 수집하는 것을 네트워크의 노드들 사이에서 송신되는 각각의 패킷에서의 페이로드(payload)의 크기를 증가시킨다. 더 큰 페이로드는 노드들(102, 104) 사이의 네트워크의 매체 액세스 제어(MAC) 계층의 효율의 증가를 의미한다. MAC 효율은 헤더(페이로드 이외의 정보)의 크기가 MAC 패킷의 패이로드의 크기와 관계없이 본질적으로 고정되기 때문에 전형적으로 증가한다. 따라서, 상대적으로 큰 송신 패킷 크기를 이용함으로써 MAC 계층 효율을 최대화하는 것이 유용하다. MoCA 네트워크가 송신 노드(102) 및 수신 노드(104) 사이의 통신에 이용되는 개시된 방법 및 장치의 실시예에서, 송신 패킷은 MoCA 패킷이다. MoCA 네트워크를 통해 노드들(102, 104)이 통신하는 하나의 실시예에서, 수집된 패킷들을 수신할 수 있는 각각의 노드는 상기 케이퍼빌리티(capability)를 MoCA 네트워크 코디네이터(network coordinator)에 통신해야만 한다. 네트워크 코디네이터는 각각의 노드의 케이퍼빌리티를 각각의 다른 노드에 통신할 것이다. 송신 노드는 자신이 그와 같은 수집된 패킷들을 수신할 케이퍼빌리티를 가지고 있다고 보고했던 노드들에 수집된 패킷들을 다만 송신할 것이다.
개시된 방법 및 장치의 하나의 실시예에서, 애플리케이션이 고정된 서비스 패킷 크기를 이요할 때, 서비스 패킷의 크기는 PDU의 크기로서 선택된다. 대안적으로, 서비스 패킷 크기는 다른 값들로 선택될 수 있다. 상이한 애플리케이션들에 대한 PDU 크기를 재정의(즉, 상이한 길이들의 서비스 패킷들이 처리될 필요가 있을 때)할 수 있는 것이 유용하다. 일단 생성되면, PDU는 MoCA 네트워크와 같은 노드들(102, 104) 사이의 네트워크를 통해 송신에 가장 효율적인 길이를 갖는 송신 패킷들을 형성하기 위해서 전체적으로 함께 그룹화될 수 있다. 데이터플로우(dataflow)의 세부사항들이 이제 제공될 것이다.
기본 데이터플로우
다음은 송신 노드(102)로부터 도 2에 도시된 수신 노드(104)로의 기본 데이터플로우의 설명이다. 송신 노드(102)가 외부 소스 또는 자신의 애플리케이션 계층으로부터 서비스 패킷들을 수신하는 경우에 대해 설명된다. 노드(102)는 "송신" 노드(102)로 칭해질지라도, 이는 외부 소스 또는 자신의 애플리케이션 계층으로부터 서비스 패킷들을 우선 수신해야만 함을 주목하라. 이제 기술될 실시예에서, 송신 노드(102)가 수신하는 서비스 패킷들은 이더넷 패킷들이다. 게다가, 개시된 방법 및 장치의 하나의 실시예에서, 송신 노드(102)로부터 수신 노드(104)로 통신하는데 이용되는 네트워크는 MoCA 네트워크이다. 그러나, 임의의 유형 서비스 패킷은 송신 노드에 의해 수신될 수 있음이 당업자에 의해 이해될 것이다. 마찬가지로, 임의의 네트워크 프로토콜이 송신 노드(102) 및 수신 노드(104) 사이의 정보의 통신에 이용될 수 있다.
송신 경로
도 2에 도시된 외부 네트워크 프로세서(124)는 기가바이트 이더넷 매체 액세스 제어 계층(GEMAC) 디바이스(130)를 포함한다. GEMAC(130)는 서비스 패킷들(예를 들어 이더넷 패킷들)을 GMII/MII 인터페이스(122)를 통해 GEPHY 제어기(108)에 송신한다. 수신된 서비스 패킷들은 공유 메모리(118) 내의 GEPHY 수신 버퍼 큐(309)에 임시로 저장된다. GEPHY 수신 버퍼 큐(309)는 GEPHY 수신 디스크립터 큐(301)에 의해 정의되고 제어된다.
서비스 패킷들은 직접 메모리 액세스(DMA) 제어기(132)에 의해 GEPHY 수신 버퍼 큐(309) 내에 배치된다. 하나의 실시예에서, GEPHY 제어기(108)는 데이터 인터페이스 제어(Data Interface Control: DIC) 전송 제어기(Transfer Controller: TC)(140)를 포함한다. 임의의 서비스 패킷들을 수신하기 전에, DIC TC(140)는 적어도 하나의 수신 디스크립터(136)(도 4를 참조하라)를 GEPHY 수신 디스크립터 큐(301) 내로 로딩함으로써 GEPHY 수신 디스크립터 큐(301)를 초기화한다. 직접 메모리 액세스(DMA) 제어기(132)는 DIC TC(140)에 의해 로딩된 수신 디스크립터를 판독하다. DMA 제어기(132)는 수신 디스크립터(136) 내의 정보를 이용하여 GEPHY 수신 버퍼 큐(309) 내에 서비스 패킷들을 저장하는 프로세스를 제어한다.
도 2는 GEPHY 제어기(108)에 상주하는 DMA 제어기(132) 및 DIC TC(140)를 도시한다. 그러나, 대안적인 실시예에서, DMA 제어기(132), DIC TC(140), 또는 이 둘 모두는 GEPHY 제어기(108)와는 독립적임이 당업자에 의해 이해될 것이다. 도 3에 도시되는 바와 같이, GEPHY 수신 디스크립터 큐(301) 및 GEPHY 수신 버퍼 큐(309)는 공유 메모리(118) 내에 인접한 위치들에 위치될 필요가 없다.
도 4는 GEPHY 수신 버퍼 큐(309) 및 GEPHY 수신 디스크립터 큐(301) 사이의 관례의 도면이다. 각각의 서비스 패킷(138)은 GEPHY 수신 버퍼 큐(209)에 있는 엔트리(138)에 저장된다. 디스크립터 큐(301)는 DIC TC(140)에 의해 로딩되는 수신 디스크립터들(136)의 세트를 포함한다. 각각의 수신 디스크립터(136)는 GEPHY 수신 버퍼 큐(309)에서의 엔트리들(138) 중 유일한 하나와 연관된다.
도 5는 개시된 방법 및 장치의 하나의 실시예에 따라 수신 디스크립터(136)의 포캣 및 콘텐츠를 도시한다. 수신 디스크립터(136)는 DIC TC(140)에 의해 정의되고 구성되어 GEPHY 제어기(108)의 내부 버퍼로부터 GEPHY 수신 버퍼(134)로의 패킷 전송을 제어한다(역도 마찬가지다). DIC TC(140)는 우선 제 1 상태로 설정된 소유(OWN) 비트(503)로 수신 디스크립터를 기록한다. 각각의 수신 디스크립터(136)는 32비트를 가진 네개의 워드를 포함한다. 제 1 워드(word)의 처음의 31 비트들은 장차 이용하기 위해 예약되는 "제 1 예약" 필드(field)(501)이다.
수신 디스크립터(136)에서의 제 1 워드의 32번째 비트는 "소유" 비트(503)이다. 소유 비트(503)가 제 1 상태에 있는 경우, 이는 수신 디스크립터(136)가 DMA 제어기(132)에 의해 이용하는데 이용 가능하다는 것을 나타낸다. 그리고나서 DMA 제어기는 수신 디스크립터(136)를 이용하여 새로 수신된 서비스 패킷을 어디로 전송할지를 표시한다. 일단 DMA 제어기(132)가 수신 디스크립터(136)를 판독하고 GEPHY 수신 버퍼 큐(309)에서 연관된 엔트리(138)에 서비스 패킷을 저장하며, DMA 제어기(132)는 수신 디스크립터(136)의 소유 비트(503)를 제 2 상태로 설정하고, 제 2 상태는 재이용을 위해 수신 디스크립터(136)를 DIC TC(140)로 복귀시킨다. 따라서, 소유 비트(503)가 제 2 상태에 있다면, 소유 비트(503)는 수신 디스크립터(136)를 이용하여 DMA 제어기(132)가 종료했음을 나타낸다. 그리고나서 DIC TC(140)는 수신 디스크립터(136)를 재이용할 수 있다. DIC TC(140)는 136에서 패킷을 일부 미리 결정된 분류 기준에 따라 분류하고 GEPHY 수신 버퍼 큐(309)로부터 TLBEQ(315)에 있는 가상 큐로 서비스 패킷(136)을 이동시킬 것이다.
개시된 방법 및 장치의 하나의 실시예에서, 오버플로우 조건은 소유 비트(503)가 제 1 상태에 있는 수신 디스크립터들(136)이 존재하지 않을 때 발생한다. 개시된 방법 및 장치의 하나의 실시예에서, GEPHY 제어기(108)는 높은 임계값을 갖는 수신 버퍼(도시되지 않음)를 포함한다. 높은 임계값은 플로우 제어 프레임(예를 들어 PAUSE 프레임)의 생성이 트리거(trigger)되기 전에 제어기의 수신 버퍼 내에 저장될 수 있는 수신된 프레임들의 최대수이다. PAUSE 프레임은 제어기의 수신 버퍼에 충분한 여유가 있을 때까지 더 많은 서비스 패킷들이 송신되지 않는 것을 보장하기 위해 송신된다. 마찬가지로, 낮은 임계값이 있다(PAUSE 프레임이 방출되는 포인트). 하나의 실시예에서, 높은 임계값은 노드들(102, 104)에 의해 실행되는 특정한 기능들에 따라(즉, 오버플로우 조건이 발생하지 않은 임계치의 정도 및 발생하는 오버플로우 조건 및 PAUSE 프레임을 불필요하게 발생시키는 결과를 초래할 비효율 사이의 트레이드오프(tradeoff)) 소프트웨어에 의해 설정될 수 있는 값이다.
수신 디스크립터(136)의 제 2 워드의 처음의 11 비트들은 "버퍼사이즈(BufferSize)" 필드(505)를 포함한다(도 5를 참조하라). 버퍼사이즈 필드(505)는 "버퍼어드레스(BufferAddress)" 필드(511)에 의해 표시되는 어드레스에서의 GEPHY 수신 버퍼 큐(309)의 엔트리(138)(즉, 상기 수신 디스크립터(136)와 연관되는 GEPHY 수신 버퍼 큐(309)에서의 엔트리)에 수신 서비스 패킷을 저장하기 위해 이용 가능한 공간의 양을 나타낸다. 제 2 워드의 다음 11 비트들은 "제 2 예약" 필드(507)이다. 수신 디스크립터(136)의 제 2 워드의 마지막 10 비트들은 "제 3 예약" 필드(509)이다.
전체의 제 3 워드는 버퍼어드레스 필드(511)이다. 버퍼어드레스 필드(511)는 수신 디스크립터(136)와 연관되는 GEPHY 수신 버퍼 큐(309) 내의 엔트리(138)의 어드레스를 나타낸다. 버퍼어드레스 필드(511)는 수신 디스크립터(136)를 GEPHY 수신 버퍼(309)에 있는 특정한 엔트리(138)와 연관시키는 필드이다.
최종적으로, 전체 4 및 최종 워드는 "다음디스크립터어드레스(NextDescriptorAddress)" 필드(513)이다. 다음디스크립터어드레스 필드(513)는 다음 수신 디스크립터(136)가 시작하는 어드레스를 나타낸다. 다음디스크립터어드레스 필드(513)의 사용으로 수신 디스크립터들(136)은 시퀀스 외에 그리고 GEPHY 수신 디스크립터 큐(301) 내의 불연속 위치들 내에 저장되는 것이 가능하다. 개시된 방법 및 장치의 하나의 실시예에서, GEPHY 수신 버퍼 큐(309)는 원형 큐이다. 따라서, 최종 수신 디스크립터 내의 다음디스크립터어드레스 필드(513)는 제 1 수신 디스크립터를 역으로 지시한다. 하나의 실시예에서, GEPHY 수신 버퍼 큐(309)에서는 네 엔트리들이 존재한다. GEPHY 수신 버퍼 큐(309) 내의 엔트리들(138) 및 GEPHY 수신 디스크립터 큐(301) 내의 수신 디스크립터들(136) 사이의 일대일 관계가 존재하기 때문에, GEPHY 수신 디스크립터 큐(301) 내에는 또한 네 수신 디스크립터들(136)이 존재한다(도 4를 참조하라).
버퍼크기 필드(505)는 11 비트들을 갖는다. 그러므로, 서비스 패킷은 길이가 최대 2048 바이트들일 수 있다(즉, 2의 11회 제곱한 것). 이 애플리케이션에서, 각각의 서비스 패킷은 GEPHY 수신 버퍼 큐(309) 내에 단 하나의 엔트리(138)만을 필요로 하는 것을 주목하라. 따라서, 각각의 서비스 패킷(138)과 연관되는 단 하나의 수신 디스크립터(136)만이 존재한다. 서비스 패킷인 GEPHY 제어기(108)에 의해 수신되고 GEPHY 수신 버퍼 큐(309)에 저장될 때, 대응하는 수신 디스크립커(136) 내의 소유 비트(503)는 제 2 상태로 설정된다.
상술한 바와 같이, DMA 제어기(132)는 수신 디스크립터들(136)을 통해 제어된다. 즉, DMA 제어기(132)는 수신 디스크립터들(136)로부터 소유 비트(503) 및 버퍼어드레스 필드(511)를 판독한다. DMA 제어기(132)는 인입하는 패킷들 각각을 소유 배트(503) 및 버퍼어드레스 필드(511)에 기초하여 어디에 저장할지를 결정한다. 소유 비트(503)가 제 1 상태에 있을 때, 수신 디스크립터(136)는 DMA 제어기(132)에 의한 이용을 위해 이용 가능하다. 소유 비트(503)가 제 2 상태에 있을 때, 수신 디스크립터(136)는 DMA 제어기(132)에 이용 가능하지 않다. DMA 제어기(132)는 수신 디스크립터(136)를 대기하여 다시 이용가능해져야만(즉, 소유 비트(503)이 제 1 상태에 있는) 한다. 서비스 패킷(138)은 상기 수신 디스크립터(136)의 버퍼어드레스 필드(511)에 의해 표시되는 위치에 저장된다. 일단 하나의 수신 디스크립터(136)가 DMA 제어기에 의해 이용되면, DMA 제어기는 다음 패킷에 대한 다음 수신 디스크립터(136)를 이용할 것임(GEPHY 수신기 디스크립터 큐는 순환 방식으로 작동한다)을 주목하라.
DMA 제어기(132)가 소유 비트(503)를 판독하는 것 외에, DIC TC(140)는 각각의 수신 디스크립터(136)로부터 소유 비트(503)를 판독하여 소유 비트(503)가 제 2 상태에 있는 그러한 수신 디스크립터들을 찾는다. DIC TC(140)가 제 2 상태로 설정된 소유 비트(503)를 갖는 수신 디스크립터(136)를 찾는다면, DIC TC(140)는 서비스 패킷의 제 1 PDU를 내부에 저장할 TLBEQ(315) 내의 개방 엔트리를 찾는다. PDU가 서비스 패킷과 동일한 크기인 경우, 제 1 PDU는 전체 서비스 패킷일 것이다. 따라서, 전체 서비스 패킷은 TLBEQ(315) 내의 하나의 엔트리(319)에 저장될 것이다. 그러나, PDU가 서비스 패킷보다 더 작은 경우, DIC TC(140)는 서비스 패킷을 단편화할 것이다. PDU와 동일한 크기를 갖는 서비스 패킷의 제 1 부분은 서비스 패킷의 제 1 PDU를 형성할 것이다. 서비스 패킷의 제 1 PDU는 TLBEQ(315)에서 다음 이용 가능한 엔트리(319)에 저장될 것이다.
DIC TC(140)는 공유 메모리(118) 내의 송신 라인 버퍼 디스크립터(305) 내내에 저장된 "상태 정보"를 판독함으로써 제 1 PDU가 TLBEQ(315)의 어느 엔트리(319)에 저장될 것인지를 결정한다. 하나의 그러한 상태 정보 필드는 TLBEQ(315) 내의 각각의 엔트리(319)(즉 PDU가 저장된)에 대한 송신 라인 버퍼 디스크립터(305)에서 유지된다. 송신 라인 버퍼 디스크립터(305)는 다음의 포맷을 갖는다:
송신 라인 버퍼 디스크립터 포맷
어드레스(베이스부터 오프셋) 비트 위치 디스크립션
0x00 비트 31 - 28 SW 이용: 이용되지 않으면 이 필드는 모두 0이다
비트 27 - 26 예약
비트 25 가능한 블록 화이트 모드: 1로 설정(이용됨)
비트 24 가능한 포인터 모드: 0으로 설정(이용되지 않음)
비트 23 - 16 이용되지 않음: 엔트리 크기: 바이트 단위
이 값은 엔트리 큐 내의 각각의 엔트리의 크기를 결정하는데 이용된다. 이 필드에 대한 최대 값은 64 바이트들이다.
비트 15 - 0 패킷 데이터 유닛 크기: 바이트 단위
0x04 비트 31 - 0 엔트리 큐에서의 엔트리들의 수
0x08 비트 31 - 0 엔트리 큐 베이스 어드레스
0x0c 비트 31 - 0 엔트리 큐 크기: 바이트 단위
0x10 비트 31 - 0 예약(다음 후속 기록 어드레스: 기록 프로세스에 의해 선택적으로 이용)
0x14 비트 31 - 0 예약(다음 후속 기록 어드레스: 기록 프로세스에 의해 선택적으로 이용)
0x18 비트 31 - 0 예약(다음 후속 기록 지수: 기록 프로세스에 의해 선택적으로 이용)
0x1c 비트 31 - 0 예약(다음 후속 판독 지수: 판독 프로세스에 의해 선택적으로 이용)
0x20 비트 31 - 24 예약(블록당 엔트리들의 수: 이는 블록 기록 모드에서 동작할 때 블록 크기를 정의한다)
비트 23 - 0 예약(블록에 자유로운 플래그들)
0x24 비트 7 - 0 상태 엔트리 0 : 큐 엔트리 #0의 상태를 기술한다
b0:0 = 지로 프로세스는 상기 엔트리를 소유한다; 1 = 판독
프로세스는 상기 엔트리를 소유한다;
다은 7 비트들이 예약된다.
비트 23 - 8 다음PDU 포인터: SPU의 다음 PDU의 인덱스를 지시한다.
FFF라면, 이 PDU는 SDU의 최종 PDU이다.
비트 31 - 24 예약
... ... ...
0x24 + (N - 1)*4 비트 7 - 0 상태 엔트리 N-1: 큐 엔트리 #N-1의 상태를 기술한다
b0:0 = 기록 프로세스는 엔트리를 소유한다; 1=판독
프로세스는 엔트리를 소유한다;
다른 7 비트들이 예약된다
비트 23 - 8 다음PDU 포인터: SPU의 다음 PDU의 인덱스를 포함한다.
FFF라면, 이 PDU는 SDU의 최종 PDU이다.
비트 31- 24 예약
송신 라인 버퍼 디스크립터(305)는 0x24 + 4(N -1) 워드들을 포함하고, 여기서 N은 TLBEQ(315)에서의 엔트리들(319)의 수이다. 송신 라인 버퍼 디스크립터(305)에서의 각각의 워드는 폭이 8 비트들이다. 송신 라인 버퍼 디스크립터(305)에서의 상태 정보 필드는 오프셋(0x24)에서 시작하는 그러한 워드들에 저장된다. 따라서, TLBEQ(315)에서의 각각의 엔트리(319)의 상태 정보 필드는 오프셋 어드레스들 0x24 + (N-1)*4에 저장되는 네 워드들에 의해서 유지되고, N은 TLBEQ(315) 내의 엔트리들(319)의 수이다. TLBEQ(315)에서의 4번째 엔트리의 경우, 상태 정보 필드의 오프셋(송신 라인 버퍼 디스크립터(305) 내의 베이스 어드레스로부터의)은 0x24 + 12이다. 상태 정보 필드 내의 제 1 워드에서의 제 1 비트는 연관되는 엔트리(319)의 상태 정보 필드(즉, 엔트리가 기록 프로세스 또는 판독 프로세스에 의해 소유되는지의 여부)를 나타낸다. 상태 정보 필드의 제 1 워드의 다른 7 바이트들은 앞으로 이용하기 위해 예약된다.
상태 정보 필드의 제 2 및 제 3 워드(즉 8 내지 23 비트들)는 다음PDU 포인터(327)이다(도 3을 참조하라). 다음PDU 포인터(327)는 상태 정보 필드가 연관되는 PDU와 동일한 서비스 패킷의 일부인 다음 PDU의 위치를 제공한다. 즉, 동일한 서비스 패킷의 일부였던 각각의 PDU들은 송신 라인 버퍼 디스크립터(305)의 상태 정보 필드에서의 다음PDU 포인터(327)에 의해 링크된다.
표 1은 송신 라인 버퍼 디스크립터(305)에서의 필드들 중 하나가 TLBEQ(315)의 베이스 어드레스를 나타내는 것을 도시한다. 다른 필드는 PDU의 크기를 나타낸다(개시된 방법 및 장치의 하나의 실시예에서 모든 PDU들은 크기가 동일한 것을 주목하라). 개시된 방법 및 장치의 하나의 실시예에 따라, Tx 라인 버퍼 디스크립터(305)에서의 각각의 엔트리는 순차적으로 저장된다.
DIC TC(140)는 연관된 엔트리(319)가 기록 프로세스에 의해 소유되는지(즉, DIC TC(140)가 엔트리(319)를 소유한다)를 상태 정보가 표시하는 것을 찾을 때까지, 각각의 엔트리(319)와 연관된 상태 정보 필드들을 판독한다. 그리고나서 EIC TC(140)는 서비스 패킷의 제 1 PDU를 상기 엔트리(319)에 기록한다. 그리고나서 DIC TC(140)는 엔트리(319)를 MoCA 포트 제어 TC(133)으로 넘겨준다. TLBEQ(315)로 카피된 각각의 패킷의 경우, DIC TC(140)는 연관된 PD(321)를 생성한다(도 3을 참조한다). PD(321)는 다음의 포맷을 갖는다.
프로토콜 디스크립터 포맷:
어드레스(베이스로부터의 오프셋) 필드 명칭 비트 위치 디스크립션
0x00 데이터 길이 31 - 16 SPU의 바이트들의 수
채널 수 15 - 4 목적지 ID
브로드캐스트_유형 3 - 2 Zip 1.2 이용으로부터 다음과 같이 확장:
0=유니캐스트
1= 멀티캐스트
기타 = 예약됨
데이터_상태 1 데이터의 상태
1=에러
0 = 에러 아님
SW_소유권 0 SW 소유권 신호:
1= CCPU 임베디드 소프트웨어에 의해 소유됨
0 = DIC TC에 의해 소유됨
0x04 PD-ID 31 - 16 각각의 프로토콜 디스크립터에 식별 값을 제공하기 위해 DIC 또는 외부 호스트에 의해 이용됨
패킷_분류 15 - 12 이는 패킷의 분류와 연관되는 값을 포함한다.
패킷의 QoS 레벨:
b1000: 파라미터화된 QoS
b0xxx: VLAN 태그의 이용자 우선순위 필드로부터의 우선순위 레벨
11 - 0 예약
0x08 다음PD 31 - 16 선택사항: 수집ID에 대한 다음 PD를 지정
PDU0 포인터 15 - 0 엔트리 큐에서의 SPU의 제 1 PDU(PDU0)를 지정. 동일한 SPU의 다른 PDU들은 버퍼 디스크립터의 상태 엔트리에서 다음PDU 포인터에 의해 표시된다.
PD(321)는 상기 PD(321)와 연관되는 서비스 패킷의 제 1 PDU를 지정하는 지수(도 3에 도시된 "PDU0 포인터"(328))를 포함한다. 동일한 서비스 패킷의 다른 PDU들은 송신 라인 버퍼 디스크립터(305)에서의 각각의 엔트리(319)의 상태 정보 내의 "다음PDU" 포인터(327)에 의해 서로 링크된다(표 1, 오프셋 0x24에서의 비트 8 내지 23을 참조하라). 다음PDU 포인터(327)는 동일한 서비스 패킷의 다음의 PDU를 보유하는 엔트리를 지시한다. 이 방식으로, 동일한 서비스 패킷으로부터 오는 PDU들의 모두는 서로 스트링(string) 연결된다. 상기 스트링에서의 최종 PDU를 지니는 엔트리(319)의 상태 정보 필드는 자신의 다음PDU가 FFF로 설정되도록 한다.
프로토콜 디스크립터들(321)은 MoCA CPU I/D 메모리(112) 내에 위치되는 프로토콜 디스크립터 큐(323)에 저장된다. 개시된 방법 및 장치의 하나의 실시예에 따르면, 프로토콜 디스크립터 큐(323)는 32개의 PD들을 보유할 수 있다. 프로토콜 디스크립터 큐(323)는 MoCA CPU(114)에 의해 주기적으로 판독된다. MoCA CPU(114)는 프로토콜 디스크립터들(321)을 이용하여 노드들(102, 104) 사이의 MoCA 네트워크를 통해 예약 요청들을 생성한다. 예약 요청이 승인되면, MoCA CPU(114)는 송신될 각각의 MoCA 패킷에 대한 MoCA 디스크립터를 생성한다. 스케줄링된 송신 시간에서, MoCA 포트 제어 TC(133)는 TLBEQ(315)로부터의 하나의 PDU를 동시에 판독된다. 일단 PDU가 TLBEQ(315)로부터 판독되면, MoCA 포트 제어 TC(133)는 PD 내의 SW_소유권 비트를 재설정함으로써 PDU가 다시 판독되는 TLBEQ 엔트리(319)의 소유권을 DIC TC(140)에 건네준다(표 2를 참조하라).
MoCA CPU(114)는 프로토콜 디스크립터 큐(323)를 검사해서, MoCA 네트워크를 통해 수신 노드(104)로 송신되는데 현재 이용 가능한 패킷들이 존재하는지를 얼마나 많은 PD들이 표시하는지를(즉, 얼마나 많은 PD들이 "1"의 값으로 설정되는 SW_소유권 비트를 갖는지) 확인한다. MoCA CPU(114)는 동일한 패킷 수집 특성들(즉 목적지 노드 및 우선순위)을 공유하는 현재 이용 가능한 PD들 중 가능한 많은 수를, 최대 MoCA 패킷 크기(8k 바이트들)에 가능한 근접한 크기를 갖는 단일 MoCA 패킷으로 그룹화한다. MoCA CPU(114)는 각각의 MoCA 패킷에 대한 하나의 MoCA 예약 요청을 행한다. 여러 MoCA 패킷들(각각 그와 같은 예약 요청과 연관되는)은 일단 예약 요청들이 승인되면 송신될 수 있다. 예약 요청이 승인되면, 소인 노드(102)에는 MoCA 패킷을 MoCA 네트워크를 통해 수신 노드(104)로 통신할 기회가 제공된다.
MoCA를 이용하여 노드들(102, 104)이 통신하는 실시예에 따르면, 이용되는 두 MoCA 패킷 포캣들이 존재한다. 이 둘 중 선택된 어느 하나는 하나보다 많은 서비스 패킷으로부터의 PDU들이 MoCA 패킷에서 수집될 것인지에 좌우된다. 개시된 방법 및 장치의 하나의 실시예에서, 하나보다 많은 서비스 패킷으로부터 PDU들을 수집하기 위해, 수신 및 송신 노드들(102, 104) 이 둘 모두는 수집된 패킷들을 처리할 수 있어야만 한다. 그러나, 심지어 송신 및 수신 모드들(102, 104) 이 둘이 수집을 처리할 수 있는 경우에도, 하나보다 많은 서비스 패킷으로부터의 PDU들이 송신 노드(102)로부터 수신 노드(104)로 송신되는 MoCA패킷에서 수집되지 dskg은 다른 원인들이 있을 수 있다.
제 1 MoCA 패킷 포맷은 하나보다 많은 서비스 패킷으로부터의 PDU들이 수집되지 않을 경우에 이용된다. 이 경우에, 단 하나의 서비스 패킷의 PDU들이 수집 헤더를 필요로 하지 않고 연관된다.
따라서, 상기 포맷은:
MoCA
헤더
PDU
0
PDU
1
<--------- 원래의 어싱크(asynch) 패킷 -------->
표 3에 도시된 경우에서, 원래의 서비스 패킷은 상기 서비스 패킷이 두 PDU들로 분할될 필요가 있었던 길이를 가지지만, 양 PDU들은 동일한 MoCA 패킷에서 MoCA 네트워크를 통해 송신된다. 이 경우에, 수신된 서비스 패킷을 PDU들로 분할하는 유일한 이유는 상이한 서비스 패킷들로부터의 패킷들이 수집되어야 하는 경우와의 일관성을 위한 것임이 주목되어야 한다. 즉, 서비스 패킷은 PDU들로 분할되는데 왜냐하면 서비스 패킷이 프로세싱하고 있을 때 서비스 패킷의 콘텐츠가 다른 서비스 패킷으로부터의 PDU들과 함께 수집될 것인지가 공지되지 않기 때문이다.
제 2 MoCA 패킷 포맷에 따르면, 수집 헤더는 MoCA 패킷 내에 포함되는 서비스 패킷들을 기술한다. 하나의 MoCA 패킷은 하나보다 많은 서비스 패킷으로부터의 PDU들을 포함할 수 있다.
MoCA 헤더 수집 헤더 SPU
0
SPU
1
... SPU
(N-1)
표 4에 도시되는 바와 같이, 제 2 MoCA 패킷 포맷은 MoCA 헤더를 포함한다. 표 5는 MoCA 헤더에 대한 포맷을 나타낸다.
MoCA 헤더 포맷
서브필드 길이 이용
송신 클럭 32 비트들 시스템 시간
패킷 유형 4 비트들 MAC 패킷의 유형을 표시
예약 4 비트들
버전 8 비트들 MAC 버전
소스 노드 ID 16 비트들
목적지 노드 ID 16 비트들
패킷 길이 16 비트들 종료시에 패킷 헤더, 페이로드 및 CRC를 나타내는 이 MAC 패킷의 바이트 단위의 길이
예약 28 비트들 예약
수집-단편화 제어 4 비트들 비트 3: 수집 헤더는 삽입되거나 (1) 삽입되지 않는다 (0)
비트 2: 스퀀스 넘버는 수집 헤더에 포함되거나 (1) 포함되지 않는다 (0);
비트 1: 수집 헤더 체크섬은 가능하거나 (1) 가능하지 않다 (0)
비트 0: 각각의 SPU의 원래의 FCS가 포함되거나 (1) 포함되지 않는다 (0)
헤더 검사 스퀀스 16 비트들 헤더 CRC
MoCA 헤더는 10개의 서브필드(subfield)들을 갖는다. 표 5에 도시된 MoCA 헤더에서의 제 1 서브필드는 시스템 시간을 제공하는 32 비트 송신 클럭 서브필드이다. 헤더에서의 제 2 서브필드는 패킷 유형(즉, 제 1 또는 제 2 유형인지)을 나타낸다. 헤더에서의 제 3 서브필드는 앞으로 사용하기 위해 예약된다. 제 4 서브필드는 이용되고 있는 MoCA MAC 계층의 버전을 나타낸다. 데 5 서브필드는 이 MoCA 패킷에서의 서비스 패킷들이 기원하는 소스 노드를 나타낸다. 하나의 실시예에서, 하나보다 많은 노드로부터 기원했던 서비스 패킷들이 존재할 수 있음이 주목되어야 한다. 제 6 서브필드는 목적지 노드로서, MoCA 패킷에서의 서비스 패킷들의 각각은 상기 목적지 노드로 송신되고 있다. MoCA 패킷에서의 서비스 패킷들 모두는 동일한 목적지 노드를 갖는 것이 주목되어야 한다. 그러나, MoCA 패킷에서의 서비스 패킷들 모두가 브로드캐스팅되어야 하는 경우, 목적지는 네트워크 내의 모든 다른 노드들일 수 있음이 또한 주목되어야 한다.
표 5에서 기술된 바와 같이, 제 7 서브필드는 헤더 및 모든 다른 콘텐츠 및 오버헤드를 포함하는 MoCA 패킷의 길이를 나타낸다. 제 8 서브필드는 24개의 예약 비트들을 포함한다. 제 9 서브필드는 수집-단편화 제어 서브필드라 칭해지고 4 비트들을 포함한다. 수집-단편화 제어 서브필드의 제 1 비트는 수집 헤더가 본 MoCA패킷 내에 존재하는지를 나타낸다. 제 2 비트는 시퀀스 번호가 포함되는지를 나타낸다. 시퀀스 번호는 시퀀스의 여러 패킷들 중에서 어느 패킷이, 즉 이 특정한 MoCA 패킷이 상기 시퀀스의 다른 패킷들에 관련되는지를 나타내는데 이용된다. 수집-단편화 제어 서브필드는 수집 헤더 체크섬(checksum)이 이용되고 있는지를 나타낸다. 수집-단편화 제어 서브필드의 제 4 및 마지막 비트는 프레임 검사 시퀀스가 이 MoCA 패킷에서 이용되고 있는지를 나타낸다. MoCA헤더 내의 제 10 및 마지막 서브필드는 에러 정정을 전송하는데 이용되는 헤더 검사 시퀀스이다.
MoCA 패킷의 제 2 필드는 수집 헤더이다. 일반적으로, 수집 헤더는 이 MoCA패킷에서 어떤 서비스 패킷들을 따라야할지를 나타낸다. 표 6은 수집 헤더에 대한 포맷을 나타낸다.
수집 헤더 포맷
서브 필드 길이 이용
스퀀스 수
16 비트들 수집-단편화 제어는 시퀀스 번호가 포함되는 것을 나타내고, 이 필드는 스퀀스 수를 포함한다. 그렇지 않으면 이 필드는 예약된다.
서비스 패킷
카운트
16 비트들 이 MoCA 패킷에서 서비스 패킷들의 수
서비스 패킷
0 크기
16 비트들 첫 번째 서비스 패킷의 크기(바이트 단위)
서비스 패킷
1 크기
16 비트들 두 번째 서비스 패킷의 크기(바이트 단위)
... ... ...
서비스 패킷
N-2 크기
16 비트들 N-2 서비스 패킷의 크기 (바이트 단위)
서비스 패킷
N-1 크기
16 비트들 N-1 서비스 패킷의 크기 (바이트 단위)
체크섬 16 비트들 가능하면(수집-단편화 제어에서 정의되는 바와 같이), 이 필드는 수집 헤더의 체크섬이다. 불가능하다면, 이 필드는 모든 영(0)들을 포함한다. 이 검사는 단지 소프트웨어용이다.
수집 헤더는 가변의 길이를 갖는다. 길이는 수집될 서비스 패킷들의 수에 좌우된다. 개시된 방법 및 장치의 하나의 실시예에서, 각각의 서브필드는 16비트들의 길이를 갖는다. 수집 헤더의 비트들의 길이는 MoCA 패킷에서 수집되는 서비스 패킷들의 수와 3의 합의 16배이다. 따라서, MoCA 패킷에서 8개의 서비스 패킷들이 수집되었다면, 수집 헤더는 16*(3+8) = 176비트들을 가질 것이다.
수집 헤더의 제 1 서브필드는 시퀀스 번호이다. 시퀀스 번호는 송신되어야할 MoCA 패킷들의 시퀀스 내에서 이 MoCA 패킷이 취할 상대적 장소를 나타내는데 이용된다. 수집 헤더의 제 2 서브필드는 이 MoCA 패킷 내에서 수집되어야 하는 서비스 패킷들의 수를 나타내는 서비스 패킷 카운트(count)이다. 다음에 오는 N개의 서브필드들 각각은 수집되고 있는 서비스 패킷들의 각각의 하나의 크기(바이트 단위)를 나타내는 서비스 패킷 크기이다. 최종 서브필드는 전체 수집 헤더에 대한 체크섬이다.
개시된 방법 및 장치의 하나의 실시예에 따르면, 노드 수락 단계 동안, 그리고 링크 계층 메시징 동안, 한지 유형 I 포맷만이 이용된다.
MoCA CPU(114)는 프로토콜 디스크립터 큐(323)으로부터 PD들을 판독함으로써 각각의 MoCA 패킷에서 어느 서비스 패킷들을 수집할지를(즉, 어떤 PDU들을) 선택한다. 프로토콜 디스크립터 큐(323)에서의 각각의 PD는 수집 ID(325)와 연관된다. 개시된 방법 및 장치의 하나의 실시예에서, 수집 ID(325)는 목적지 노드(즉, PD와 연관되는 서비스 패킷이 송신될 노드)를 나타내는데 이용되는 값을 서비스 패킷의 우선순위를 나타내는데 이용되는 값을 갖는 값과 연결시킴으로써 형성된다. 우선순위는 우선순위화되고/되거나 파라미터화된 서비스 품질(Prioritized and/or Parameterized Quality of Service : PQoS)을 이용하는 MoCA 네트워크들에서 널이 공지되어 있는 개념이다. 서비스 패킷과 연관되는 우선순위가 존재하지 않는 실시예들에서, 목적지는 단독으로 수집 ID를 결정할 것이다. 수집 ID가 다른 애플레이션들의 경우 다른 방식들로 형성될 수 있음은 당업자에게 이해될 것이다. 즉, PD와 연관되는 서비스 패킷의 다른 특성들은 어는 서비스 패킷들 또는 각각의 서비스 패킷의 PDU들이 하나의 MoCA 패킷 내에서 서로 수집되는지를 결정하기 위해 이용될 수 있다.
MoCA CPU(114)는, PD들과 연관되는 PDU들이 하나의 MoCA 패킷에서 모두 적합할 것인지 아닌지 간에, PD들 각각이 동일한 수집 ID를 가지는지 간에, 얼마나 많은 PD들이 MoCA 네트워크상에 놓일 준비가 되어 있는지를 검사할 것이다. 준비가 되어 있고 하나의 MoCA 패킷들에 적합할 것이고 동일한 수집 ID를 갖는 PD들 모두는 하나의 MoCA 패킷들 내로 수집된다. 이 목적은 MoCA 패킷으로 하여금 MoCA 네트워크의 효율을 가능한 많이 증가시키도록 하는 데 있다. 그러나, 단지 MoCA 네트워크의 효율을 증가시키는 것을 넘어서는 본 방법 및 장치의 다른 이익들이 또한 존재할 수 있음이 당업자에 의해 이해될 것이다.
하나의 실시예에 따르면, 노드(102)에 MoCA 사이클 내에서 예약 요청 기회가 제공되면, 수집된 패킷 길이가 미리 결정된 수의 바이트들(예를 들어, 4k 바이트들)보다 크도록 충분한 PDU들이 존재하는 경우에만 동일한 수집 ID를 갖는 패킷들의 그룹에 대해 예약 요청이 행해진다. 그렇지 않으면, 현재 예약 요청은 경과되고 다음 예약 요청 기회가 당도할 때까지 어떠한 MoCA 패킷들도 송신되지 않을 것이다. 하나의 실시예에 다르면, 타이머는 미리 결정된 시간 이후에 타임-아웃(time-out)할 것이고, 송신기는 상기 타임아웃 이후에 송신하는데 이용 가능한 PDU들에 대한 예약 요청을 행할 것이다.
동일한 수집 ID를 갖는 서비스 패킷들이 도착하는 순서는 서비스 패킷들과 연관되는 PD들이 프로토콜 디스크립션 큐(323)에 기록되는 순서에 의해 정의된다. 동일한 수집 ID를 갖는 PD들은 링크된 PD 목록에 의해 서로 링크된다. 이 연계는 적어도 두 상이한 방법들 중 하나의 의해 생성될 수 있다.
제 1 방법은 링크된 PD 목록을 발생시키는 것이 각각 새로 수신된 서비스 패킷에 대한 PD가 생성될 때 DIC TC(140)가 각각의 유일한 수집 ID에 대한 하나의 링크된 PD를 생성하는 것이다. 도 3의 프로토콜 디스크립터 큐(323)는 링크된 PD 목록이 처리될 수 있는 하나의 예에 대한 도면이다. 이 실시예에 따르면, DIC TC(140)는 프로토콜 디스크립터 큐(323) 내에 수집 ID(325) 및 다음PD 포인터(327)를 저장함으로써 링크된 PD 목록을 초기에 생성한다. 초기에, 다음PD 포인터(327)는 동일한 수집 ID를 갖는 후속 서비스 패킷이 수딘되지 않았음을 나타내는 디폴트 값을 가진 채로 남는다. 개시된 방법 및 장치의 이 실시예에서, DIC TC(140)는 각각 링크된 PD 목록에 대한 "판독" 포인터 및 "이전PD" 포인터를 유지한다.
판독 포인터는 링크된 PD 목록의 헤더를 지시한다. 따라서, 각각의 링크된 PD 목록은 상기 목록과 연관되는 하나의 판독 포인터를 가질 것이다. 판독 포인터로 인해서, DIC TC(140)는 MoCA CPU(114)가 MoCA 패킷들을 형성하는 시간일 때, 상기 목록의 헤드를 찾는 것이 가능하다. 이 방식에서, 판독 포인터를 MoCA CPU(114)로 전달함으로써, MoCA CPU(114)는 동일한 수집 ID를 갖는 모든 PE들을 자신의 상대적인 시간 순서로 판독하여 예약 요청들을 행한다. 다음PD 포인터는 링크된 PD목록 내의 각각의 엔트리를 다음 엔트리와 연결한다.
따라서, 제 1 서비스 패킷이 수신되면, 수집 ID 값을 수집 ID(325)로 로딩하는 것 외에도, DIC TC(140)는 판독 포인터 및 이전PD 포인터 이 둘 모두에서 이 제 1 PD의 위치를 저장할 것이다. 새로운 서비스 패킷이 동일한 수집 ID를 가진 채로 수신되면, 상기 서비스 패킷에 대한 PD는 수집 ID(325)를 포함할 것이다. 다음PD 포인터(327)는 초기에 자신이 가장 최근에 수신된 서비스 패킷과 연관됨을 나타내는 디톨트 값을 가질 것이다. 그러나, DIC TC(140)는 이전PD 포인터를 이용하여 링크된 PD 목록의 최종 PD(이 경우, 링크된 PD 목록에서의 제 1 PD)의 위치를 식별할 것이다. 그리고나서 DIC TC(140)는 이전PD 포인터에 의에 표시되는 PD의 다음PD 포인터(327)를 이 가장 최근에 수신된 서비스 패킷과 연관되는 PD의 값으로 갱신할 것이다. 게다가, DIC TC(140)는 다음 서비스 패킷이 도착할 때, DIC TC(140)가 링크된 PD 목록의 종단을 찾을 수 있도록 DIC TC(140)에 의해 보유되는 이전PD 포인터를 새로운 PD의 값으로 갱신할 것이다.
이 방식에서, 새로운 서비스 패킷이 수신되고 PD가 상기 서비스 패킷에 대해 생성될 때마다, 링크된 PD 목록은 새로운 이 PD를 포함하도록 갱신될 것이다. 이 방법에서, DIC TC(140)는 자유로운 새로운 PD를 프로토콜 디스크립션 큐(323)에서 어디든지 기록할 수 있는데, 왜냐하면 서비스 패킷들이 수신되었고 각각의 연관된 PD의 위치의 상대적인 순서가 링크된 PD 목록에 의해 유지되기 때문이다.
제 2 방법은 링크된 PD 목록을 발생시키는 것이 DIC TC(140)가 이 제 1 엔트리(엔트리 번호 0)로부터 최종 엔트리(엔트리 M-1)까지 순차적으로 새로운 PD들을 프로토콜 디스크립션 큐(323)에 추가하는 것이다. 이 실시예에서, 프로토콜 디스크립터 큐(323)는 원형이다. 즉, 프로토콜 디스크립션 큐(323)에서의 최종 엔트리(엔트리 M-1)는 제 1 엔트리(엔트리 0)를 역으로 지시한다. 따라서, 각각의 PD와 연관되는 각각의 서비스 패킷이 수신되는 상대적인 순서는 프로토콜 디스크립션 큐(323)에서 유지된다. MoCA CPU(114)는 MoCA MAP 사이클 내에서 프로토콜 디스크립션 큐(323)으로부터의 이 PD들을 가끔 판독할 것이다. MoCA CPU(114)는 이들을 적절한 링크된 PD 목록으로 분류하여 이들을 예약 요청들을 발생시키는데 이용되도록 MoCA CPU I/D 메모리(112)에 저장할 것이다. 일단 PD가 MoCA CPU(114)에 의해 판독되었다면, 프로토콜 디스크립션 큐(323) 내의 엔트리는 다음 PD가 저장될 수 있도록 DIC TC(140)로 역으로 방출될 것이다.
전체 송신 라인 버퍼 엔트리 큐(315)가 모든 PDC들에 대해 이용가능한 경우에 문제가 발생할 수 있음이 주목되어야 한다. 상기 문제는 각각 가장 낮은 우선순위를 갖는 서비스 패킷들의 큰 블록이 GEPHY 제어기(108)에 의해 수신되는 경우 발생할 것이다. 수신되는 서비스 패킷들 각각은 필요에 따라 단편화되고 서비스 패킷들로부터 형성되는 PDU들은 상술한 바와 같이 송신 라인 버퍼 엔트리 큐(315)에 저장된다. 이 하위 우선순위 PDU들은 전에 송신 라인 버퍼 엔트리 큐(315)를 점유할 수 있다.따라서, 보다 상위의 우선순위 서비스 패킷들은 하위의 우선순위 PDU들의 일부가 송신 라인 버퍼 엔트리 큐(315)로부터 제거될 때까지 GEPHY 수신 버퍼 큐(309)로부터 수신되지 않을 수 있을 것이다. 그와 같은 하위 우선순위 서비스 패킷들로 하여금 보다 상위의 우선순위 서비스 패킷들이 수신되는 것을 방해하도록 하는 것은 바람직하지 않을 것이다. 더욱이, MoCA 패킷들이 MoCA 네트워크를 통해 송신될 수 있는 비율과 동일한 비율로, 보다 상위의 우선순위 서비스 패킷들의 균일한 스트림(stream)이 MoCA 노드들에 작용하는 경우, 더 많은 수의 이 하위 우선순위 서비스 패킷들은 아주 오랜 시간 동안 송신 라인 버퍼 엔트리 큐(315)에 "포획(trapped)"될 수 있다(즉, 다른 노드들에 대한 보다 상위의 우선순위 패킷들은 네트워크 대역폭의 대부분을 이용하고, 고려 중인 노드에서의 보다 상위의 우선순위 패팃들은 동일한 노드에서의 하위 우선순위 패킷들에 의해 차단되어 있다). 송신 라인 버퍼 엔트리 큐(315)가 보다 하위의 우선순위 서비스 패킷들을 제거하기 시작할 유일한 시간은 인입하는 새로운 상위 우선순위 서비스 패킷들의 비율이 MoCA 패킷들이 송신 라인 버퍼 엔트리 큐(315)로부터 생성되고 있으면 MoCA 네트워크를 통해 송신되는 비율보다 더 낮을 때이다.
이를 방지하기 위해, 가상 큐의 개념이 이용된다. 각각의 수빈 ID(325)는 가상 큐(329)와 연관된다(도 3을 참조하라). 각각의 가상 큐(329)는 구성 가능한 최대 크기를 갖는다. 각각의 가상 큐(329)는 또한 가상 큐(329)가 만원일 때 무엇을 할지를 정의하는 구성 가능 특성을 지닌다. 상기 속성은 패킷들이 들어오지 않도록 하기 위해 또는 패킷들이 들어오지 않도록 하지만 가상 큐(329)가 가득 차 있는 동안 이들을 기존 패킷들에 오버라이트(overwrite)하도록 하기 위해 MII/GMII 플로우 제어(PAUSE 프레임) 어는 한쪽을 트리거하도록 설정될 수 있다.
각각의 서비스 패킷이 가장 큐들(329) 중 하나를 통과해야만 하기 때문에, 가상 큐(329)의 크기는 상기 가상 큐(329)에 대한 최대로 달성 가능한 송신 처리량(즉, 가상 큐(329)와 연관되는 수집 ID를 갖는 상기 서비스 패킷들에 대한 처리량)을 결정할 것이다. 그러므로, 처리량을 최적화하기 위해, 각각의 가상 큐를 가능한 한 크게 잡는 것을 바람직하다. 한편, 하위 우선순위 수집 ID들과 연관되는 하위 우선순위 패킷들은 오랜 시간 동안 가상 큐들(329)에 남아 있을 수 있다. 이는 가상 큐들(329)이 저장되어 있는 공유 메모리의 효율을 저하시킨다. 따라서, 메모리에 하위 우선순위 가상 큐들을 넘치게 할당하지 않는 것이 바람직하다. 인입하는 상위 우선순위 패킷들을 스톨(stall)하지 않고도, 송신 라인 버퍼 엔트리 큐(315)의 효율을 최대화하고 상대적으로 적은 상위 우선순위 패킷들이 있을 때 하위 우선순위 패킷들에 대한 가장 높은 가능한 처리량을 달성하는 하나의 방법은 각각의 가상 큐(329)의 최대 크기에 해단 최적화 값을 선택하는 것이다. 최적화 값은 노드 자체 및 네트워크 이 둘의 트래픽 프로파일(traffic profile)의 함수이다. 개시된 방법 및 장치의 하나의 실시예에서, 트래픽 프로파일이 변함에 따라, 가상 큐들(329)의 크기가 동적으로 재조정될 수 있다.
개시된 방법 및 장치의 하나의 실시예에 따르면, 가상 큐들의 동적 크기 재조정은 정산 동작 중의 애플리케이션 소프트웨어에 의해 가동되고 있는 동안(본질적으로 실시간으로) 실행된다. 하나의 그와 같은 실시예에서, 애플리케이션 소프트웨어는 외부 네트워크 프로세서(124) 내에 있다(도 2를 참조하라). 다른 실시예에서, 애플리케이션 소프트웨어는 MoCA CPU(114) 내에 있다. 동적 크기 재조정은 상이한 가상 큐들(329)의 상대적인 최대 처리량 한계치들의 균형을 다시 맞춰서 플로우(서비스 패킷들의 스트림)를 추가하거나 제거할 필요가 있다. 하나의 그와 같은 실시예에서, 애플리케이션 드라이버(driver)는 각각의 가상 큐(329)의 크기를 직접 수정한다. 각각의 큐(329)의 크기는 공유 메모리(118) 내의 메모리 위치에 저장된다. 대안으로, 각각의 가상 큐(329)의 크기는 MoCA CPU I/D 메모리(112)에 저장된다. 어느 경우든지, 상기 크기는 외부 네트워크 프로세서(124), DIC TC(140), 및 MoCA CPU(114)에 액세스 가능하다. 가상 큐(329)의 크기가 감소하면, 가상 큐(329) 내의 현재 PDU들의 수는 가상 큐(329)의 수용할 새로운 크기보다 더 클 수 있다. 그러나, 개시된 방법 및 장치의 하나의 실시예에 따르면, PDU들은 드롭되지 않는다. 일 실시예에 따르면, 가상 큐(329)의 새로운 크기는 새로 도착하는 패킷들에만 효력을 발휘한다. 가상 큐(329)의 크기 변화 이후에 도착하는 새로운 패킷들은 가상 큐(329)에 대해 설정된 구성에 따라, GMII/Mii(Xoff 상태)에 의해 차단되거나 또는 드롭(drop)될 것이다.
각각의 수집 ID는 하나의 MoCA 패킷들로 수집될 수 있는 패킷들을 식별한다. 개시된 방법 및 장치의 하나의 실시예에서, 수집 ID는 동일한 우선순위로 동일한 목적지로 송신되는 모든 패킷들을 그룹과 연관된다. N개의 목적지 노드들을 지원하기 위해 P 우선순위 레벨들은 P 가상 큐들(329)의 N배를 요구한다. 예를 들어, N = 15이고 P = 4이면, 60 가상 큐들(329)이 요구된다. 제한된 공유 메모리가 존재하는 경우, 각각의 라인 버퍼는 매우 작을 것이다. 상대적으로 작은 가상 큐들은 패킷 수집이 행해질 수 있는 범위를 제한할 것이다. 이는 단일 MoCA 패킷들로 수집되는 패킷들이 동일한 가상 큐(329)에 상주할 필요가 있기 때문이다. 양호한 패킷 수집을 달성하기 위해, 각각의 가상 큐는 충분한 수의 PDU들을 보유하여 충분히 클 필요가 있다. 개시된 방법 및 장치의 하나의 실시예에서, 구현되고 있는 특정 애플리케이션의 정보는 각각의 가상 큐의 크기 및 각각의 수집 ID의 정의를 규정하는데 도움을 주도록 이용될 수 있다. 하나의 예에서, 단 하나의 우선순위 레벨이 고려된다(패킷들의 우선순위와는 관계없이 하나의 MoCA 패킷 내에 동일한 목적지로 지향되는 패킷들 모두를 수집한다). 다른 예에서, 목적지 노드들의 수가 제한된다. 당업자는 가상 큐들(329)을 효율적으로 이용하는 여러 다른 그러한 방법들을 식별할 것이다.
개시된 방법 및 장치의 하나의 실시예에 따르면, 가상 큐들(329)의 모두의 크크들의 합은 송신 라인 버퍼 엔트리 큐(315)와 동일하다. 개시된 방법 및 장치의 하나의 대안적인 실시예에서, 가상 큐들(329)의 모두의 크기들의 합은 송신 라인 버퍼 엔트리 큐(315)의 총 크기보다 더 크다. 이는 트래픽의 동적 특성을 수용한다(즉, 트래픽의 레이트(rate)나 각각의 우선순위의 서비스 패킷들의 수가 일정하지 않은 사실). 개시된 방법 및 장치의 하나의 실시예에 따르면, 가상 큐들(329) 중 어떤 큐는 자신이 가득 찰 때 플로우 제어를 트리거하도록 프로그램될 수 있다. 다른 실시예에 따르면, 가상 큐들(329)의 임의의 서브세트는 가상 큐들 중 일부, 또는 이들의 전부가 가득 찰 때 플로우 제어를 트리거하도록 프래그램된다. 대안으로 MII/GMII 플로우 제어는 송신 라인 버퍼 엔트리 큐(315)가 가득 찰 때 트리거된다.
개시된 방법 및 장치의 대안적인 실시예에 따르면, 외부 이더넷 드라이버는서비스 패킷들이 이더넷을 통해 노드(102)로 송신되기 전에 상기 서비스 패킷들을 버퍼링한다. 서비스 패킷들은 시간 시퀀스에서 수집되고 배치될 수 있는 패킷들의 그룹들로 직접적으로 형상화된다. 그리고나서 패킷들은 군(cluster)들을 이뤄서 노드(102)에 의해 수신되고, MoCA 패킷들로 직접 수집될 수 있다. 각각의 군은 동일한 목적지 및 동일한 우선순위에 대한 패킷들을 포함할 수 있다. 대안으로, 패킷들은 다른 수집 기준을 이용하여 군집화될 수 있다. 군은 단 하나의 패킷(수집이 아님) 또는 여러 패킷들을 포함할 수 있다. 개시된 방법 및 장치의 이 실시예에 따르면, 송신될 MoCA 패킷들의 모두에 대해 단 하나의 송신 큐만이 존재한다. 순환하는 송신 라인 버퍼 엔트리 큐(315)는 순차적인 방식으로 작동한다. MoCA CPU(114)는 송신 라인 버퍼 엔트리 큐(315)에서 이용 가능한 패킷들의 하나 또는 여러 군들에 대한 예약 요청들을 행한다. 수집 메커니즘의 효율은 외부 호스트에서의 트래픽 형상화의 함수이다.
수신 경로
이제 다른 노드(104)로부터 수집된 패킷들을 수신하기 위해 이용되는 방법 및 장치로 돌아와서, 프로세스는 MoCA 네트워크를 통해 노드(102)에 의해 수신되고 있는 MoCA 패킷으로 시작한다. 송신 경로의 상기 설명과 마찬가지로, 노드들(102, 104) 사이에서 네트워크를 구형하는데 이용되는 프로토콜은 패킷들로 하여금 노드들(102, 104) 사이에 통신되도록 하는 임의의 프로토콜일 수 있다. 그러나, 특정한 실시예를 설명하기 위해, MoCA 네트워크 및 프로토콜이 본원에서 설명된다.
노드(102)에 의해 수신되는 노드(104)로부터의 MoCA 패킷들은 우선 MoCA 포트 제어 TC(133)에 의해 수신된다. MoCA 포트 제어 TC(133)는 DMA를 프로그램하여 패킷들이 공유 메모리(118)에 위치된 수신 라인 버퍼 엔트리 큐(313)의 하나 이상의 엔트리들로 전송된다(도 2 및 도 3을 참조하라). 개시된 방법 및 장치의 하나의 실시예에서, 수신 라인 버퍼 엔트리 큐(313)의 각각의 엔트리는 적어도 하나의 최대 MoCA 패킷을 보유하는데 충분한 패킷 데이터 공간을 갖고 큐(313)는 구성 가능한 수의 엔트리들을 포함한다.
MoCA 포트 제어 TC(133)는 정보를 수신 라인 버퍼 디스크립터(307)에 로딩함으로써 DMA를 프로그램한다. 수신 라인 버퍼 디스크립터(307)는 수신 라인 버퍼 엔트리 큐(313) 내의 연관된 엔트리가 새로 수신되는 MoCA 패킷을 수용하는데 이용 가능한지를 나타내는 소유자 플래그를 나타낸다. 그 후에 이 엔트리들은 소유자 플래그의 상태를 변경함으로써 GEPHY 제어기(108) 내의 DIC TC(140)로 넘겨진다.
DIC TC(140)는 우선 MoCA 패킷 헤더 및 수집 헤더를 검토한다. DIC TC(140)는 또한 GEPHY 송신 디스크립터 큐(303) 내의 GEPHY 송신 디스크립터들 내의 소유 비트를 검토한다. 소유 비트는 GEPHY 송신 버퍼 큐(311) 내의 다음 GEPHY 송신 버퍼 엔트리가 서비스 패킷들을 수용하는데 이용 가능한지를 나타낸다. DIC TC(140)는 각각의 수신된 서비스 패킷(MoCA 패킷에서의)에 대한 하나의 이용 가능한 GEPHY 송신 디스크립터를 서비스 패킷을 기술하는 정보로 로딩한다. DIC TC(140)는 MoCA 패킷 내에서 수신되는 수집 헤더를 판독함으로써 얼마나 많은 서비스 패킷들이 수신되었는지를 결정한다. 개시된 방법 및 장치의 하나의 실시예에 따르면, GEPHY 송신 디스크립터 큐(303)는 두 개의 GEPHY 송신 디스크립터들을 보유할 충분할 공간을 갖는다. 따라서, GEPHY 송신 버퍼 큐(311)는 두 개의 인출하는 서비스 패킷들을 보유하는데 충분한 공간을 갖는다. 개시된 방법 및 장치의 다른 실시예에 따르면, GEPHY 송신 기술자 큐(303)는 구성 가능한 수의 GEPHY 송신 기술자들을 보유한다.
수신 라인 버퍼 엔트리 큐(313)가 PDU들의 유닛들로 조직될지라도, 각각의 GEPHY 송신 디스크립터는 하나의 완전한 서비스 패킷을 기술한다. GEPHY 송신 디스크립터 큐는 순환 방식으로 작동하고, EIC TC(140)에 의해 설정된다. 그 후에 GEPHY 송신 디스크립터는 송신 디스크립터의 소유 비트를 GEPHY DMA(132)로 스위칭함으로써 GEPHY 제어기의 DMA(132)로 넘겨진다. DMA(132)는 서비스 패킷(이더넷 패킷)을 GEPHY 제어기(108)에 전송하고 나서, GEPHY 제어기(108)는 이더넷 패킷을 GMII/MII를 통해 가능한 빨리 송신할 것이다. 이더넷 패킷을 송신한 후에, GEPHY 송신 디스크립터는 소유 비트를 재설정함으로써 DIC TC(140)으로 역으로 넘겨지고, DIC TC(140)는 송신 디스크립션 상태를 프로세싱하여 디스크립터를 재이용할 것이다. DIC TC(140)는 개별에 기초하여 또는 그룹에 기초하여 송신 디스크립터를 정의하고 프로세싱할 수 있다. Rx 수신 버퍼 엔트리 큐로부터 GEPHY 송신 버퍼 큐로 MoCA 패킷들을 전송하는 프로세스 동안, DIC TC(140)는 애플리케이션에 의존하는 미리 정의된 기준을 이용하여 이 패킷들에 대한 필터링(서비스 패킷들의 일부를 드롭하는 것을 포함하는)을 실행할 수 있다.
개시된 방법 및 장치의 하나의 실시예에서, 각각 수신 라인 버퍼 엔트리 큐(313)에서 서비스 패킷을 기술하는 두 GEPHY 송신 디스크립터들이 이용되고, 이 둘 중 각각은 이더넷 네트워크를 통해 전송될 것이다. GEPHY 송신 디스크립터는 수신 디스크립터와 동일한 포맷을 갖는다.
개시된 방법 및 장치의 하나의 실시예에서, 수신 라인 버퍼 엔트리 큐는 하나보다 많은 MoCA 패킷을 보유할 수 있다. 최소 크기는 MoCA 패킷이 수신되고 DIC TC(140)로 넘겨질 때 DIC TC(140)의 반은 및 프로세싱 속도의 함수이다.
개시된 방법 및 장치의 하나의 실시예에서, GMII/MII 속도는 MoCA 네트워크를 통해 가장 양호한 처리량을 달성하기 위해 MoCA 네트워크 속도 충분히 위에 있도록 구성된다. GMII/MII 속도가 MoCA 네트워크 속도에 근접하거나 이하에 있는 경우들에서, 수신 라인 버퍼 엔트리 큐(319)는 MoCA 네트워크를 통해 노드(102)로 인입하는 트래픽의 버스트(burst)들을 흡수하는데 충분히 크게 구성될 필요가 있다. 하나의 실시예에서, 수신 라인 버퍼 엔트리 큐(319)의 정확한 크기는 수신 노드(102)에 의해 이용되는 최대 비트 로딩의 함수이다. 하나의 실시예에서, 수신 노드는 사신이 수신할 패킷들의 비트-로딩을 제한하여 송신 노드가 데이터를 원하는 것보다 더 빨리 수신 노드로 송신하지 않도록 할 수 있다. 하나의 실시에에서, 비트 로딩 제한은 패킷들이 외부 네트워크 프로세서(124)로부터 외부 네트워크를 통해 수신되는 속도에 근접하다.
개시된 방법 및 장치의 다양한 실시예들이 상술되었을지라도, 상기 실시예들은 단지 예로서 제공되었으므로 청구된 방법을 제한하지 않아야 함이 이해되어야 한다. 마찬가지로, 다양한 도면들은 개시된 방법 및 장치에 대한 예시적인 아키텍처 또는 다른 구성을 도시할 수 있다. 이는 개시된 방법 및 장치에 포함될 수 있는 특징들 및 기능을 이해하는데 도움을 주도록 행해진다. 청구된 발병은 도시된 예시 아키텍처들 도는 구성들로 제한되지 않고, 오히려 바람직한 특징들은 다양한 대체 아키텍처들 및 구성들을 이용하여 구현될 수 있다. 실제로, 개시된 방법 및 장치의 원하는 특징들을 구현하기 위해 어떤 대체 기능, 논리 또는 물리적 분할 및 구성들이 구현될 수 있는지는 당업자에게 명백할 것이다. 또한 본원에서 서술된 것 이외의 다수의 상이한 구성 모듈 명칭들은 다양한 분할들에 적용될 수 있다. 추가적으로, 흐름도들, 동작 설명들 및 방법 청구항들에 있어서, 본원에서 단계들이 제공되는 순서는 컨텍스트가 달리 지적하지 않으면 다양한 실시예들이 인용된 기능들을 동일한 순서로 실행하도록 구현되는 것을 지시하지 않아야 한다.
개시된 방법 및 장치가 다양한 예시적인 실시예들 및 구현예들에 의해 설명될지라도, 개별 실시예들 줄 하나 이상에서 설명되는 다양한 특징들, 양태들, 및 기능은 이들의 응용 가능성에 있어서 이들이 설명되는 특정한 실시예로 제한되지 않는다. 그러므로, 청구된 발명의 폭 및 범위는 상술한 예시적인 실시예들 중 임의의 실시예에 의해 제한되어서는 안 된다.
본 문서에서 이용되는 용어들 및 어구들 및 이의 변형들은 달리 명확하게 진술되지 않으면, 제한하는 것과는 대조적으로 제한을 두지 않는 것으로 해석되어야만 한다. 상기의 예로서: 용어 "including"은 의미 "including, without limitation" 등을 의미하는 것으로 판독되어야만 하고; 용어 "example"은 논의되고 있는 아이템의 예시적인 경우들을 제공하지만 이의 철저하거나 제한하는 목적을 제공하지 않고; 용어 "a" 및 "an"은 "at least one", "one or more", 등을 의미하는 것으로 해석되어야만 하고; "convential", "traditional", "normal", "standard", "known" 및 유사한 용어들과 같은 형용사들은 제공된 시간 기간으로 또는 제공된 시간 기간 이래로 이용 가능한 아이템으로 기술되는 아이템을 제한하는 것으로 해석되어서는 안 되고, 대신에 현재 또는 미래에서의 어떤 시간에 이용 가능하거나 공지될 수 있는 종래의, 전통의, 정상의 표준 기술들을 포함하는 것으로 판독되어야만 한다. 마찬가지로, 본 문서가 당업자에게 분명하거나 공지되어 있는 기술을 칭할 때, 그와 같은 기술들은 현재 또는 미래에서의 임의의 시간에 당업자에게 분명하거나 공지된 것들을 포함한다.
접속사 "and"와 연결되는 아이템들의 그룹은 상기 아이템들 각각 또는 모든 아이템이 그룹화 시에 존재해야만 하는 것을 요구하는 것으로 해석되어서는 안 되고, 오히려 달리 명확하게 진술되지 않으면 "and/or"로 판독되어야만 한다. 유사하게, 접속사 "or"와 연결되는 아이템들의 그룹은 상기 그룹들 중에서 상호 배타성을 요구하는 것으로 해석되어서는 안 되고, 오히려 달리 명확하게 진술되지 않으면 "and/or"로 판독되어야 한다. 더욱이, 개시된 방법 및 장치의 아이템들, 요소들 및 컴퓨넌트들이 단수로 기술되거나 청구될지라도, 단수로의 제한이 명확하게 진술되지 않으면 복수가 본 발명의 범위 내에 있도록 의도된다.
일부 예들에서 "하나 이상의", "적어도", "로 제한되지 않는다" 또는 다른 유사한 어구들과 같이 단어들 및 어구들을 확장시키는 존재가 그와 같은 확장 어구들이 부재할 수 있는 예들에서 더 협소한 경우에도 의도되거나 요구되는 것을 의미하도록 판독되어서는 안 된다. 용어 "모듈"의 이용은 상기 모듈의 일부로서 기술되거나 주장되는 컴포넌트들 또는 기능들이 공통 패키지 내에서 모두 구성되는 것을 함축하지 않는다. 실제로, 모듈이 다양한 컴포넌트들 중 임의의 컴포넌트 또는 모든 컴포넌트들은 논리 또는 다른 컴포넌트들을 제어하든지 간에, 단일 패키지 내에서 결합되거나 개별적으로 유지될 수 있고 다수의 그룹화들 또는 패키지들 내에 또는 다수의 위치들에 걸쳐 분배될 수 있다.
추가적으로, 본원에 진술된 다양한 실시예들은 예시적인 블록도들, 흐름도들 및 다른 도면들의 측면에서 기술된다. 본 문서를 판독한 후에 당업자에 의해 명백해지는 바와 같이, 도시된 실시예들 및 이들의 다양한 대체물들은 도시된 예들로 한정되지 않고 구현될 수 있다. 예를 들어 블록도들 및 블록도들의 첨부 설명은 특정한 아키텍처 또는 구성을 지정하는 것으로 해석되어서는 안 된다.
102 : 제 1 노드 104 : 제 2 노드
124 : 외부 네트워크 프로세서 118 : 공유 메모리

Claims (25)

  1. 통신 제어 시스템 노드에 있어서, 상기 시스템은:
    a) 메모리;
    b) 상기 메모리에 연결되는 물리적 계층 제어기로서, 상기 물리적 계층 제어기는 명령들을 실행할 수 있고, 상기 명령들은 상기 제어기로 하여금:
    i) 적어도 하나의 수신 디스크립터(Receive Descriptor)를 생성하고;
    ii) 제 1 네트워크로부터 서비스 패킷들을 수신하고;
    iii) 상기 수신 디스크립터의 콘텐츠에 기초하여 상기 메모리 내에 상기 서비스 패킷들을 저장하고;
    iv) 모두 길이가 동일한 패킷 데이터 유닛(Packet Data Unit)들을 정의하고;
    v) 프로토콜 디스크립터(Protocol Descriptor)들을 생성하고 각각의 그러한 프로토콜 디스크립터를 하나 이상의 패킷 데이터 유닛들로 연관시키고;
    vi) 상기 메모리 내의 엔트리에 각각의 프로토콜 디스크립터를 저장하도록 하는, 물리적 계층 제어기;
    c) 명령들을 실행할 수 있는 네트워크 중앙 처리 장치(Central Processing Unit: CPU)로서, 상기 네트워크 CPU로 하여금:
    i) 상기 프로토콜 디스크립터들을 판독하고;
    ii) 상기 메모리 내에 저장된 프로토콜 디스크립터들의 최소 수보다 더 많은 수가 존재할 때, 제 2 네트워크상에서 예약 요청을 생성하도록 하는, 네트워크 CPU를 포함하는 통신 제어 시스템 노드.
  2. 청구항 1에 있어서, 상기 제어기는 직접 메모리 액세스(direct memory access: DMA) 제어기를 포함하고, 상기 DMA 제어기는 상기 수신 디스크립터의 콘텐츠에 기초하여 상기 메모리 내에 상기 서비스 패킷들을 저장하는 통신 제어 시스템.
  3. 청구항 1에 있어서, 상기 서비스 패킷들은 제 1 프로토콜에 따라 수신되고 상기 패킷 데이터 유닛들은 제 2 프로토콜에 따라 송신되는 통신 제어 시스템.
  4. 청구항 3에 있어서, 상기 제 1 네트워크는 이더넷 네트워크이고 상기 제 2 네트워크는 MoCA 네트워크인 통신 제어 시스템.
  5. 청구항 4에 있어서, 상기 서비스 패킷은 이더넷 패킷인 통신 제어 시스템.
  6. 청구항 3에 있어서, 상기 수신된 서비스 패킷들의 크기는 상기 패킷 데이터 유닛들의 크기와 상이한 통신 제어 시스템.
  7. 청구항 6에 있어서, 상기 동일한 서비스 패킷에서 기원하였던 콘텐츠를 갖는 각각의 패킷 데이터 유닛은 동일한 프로토콜과 연관될 통신 제어 시스템.
  8. 청구항 3에 있어서, 상기 수신된 서비스 패킷들은 상기 패킷 데이터 유닛들과 크기가 동일한 통신 제어 시스템.
  9. 청구항 1에 있어서, 상기 물리적 계층 제어기는 기가바이트 이더넷 물리적 계층 제어기(Gigabyte Ethernet Physical Layer Controller: GEPHY)인 통신 제어 시스템.
  10. 청구항 1에 있어서, 상기 메모리는 수신 버퍼, 수신 라인 버퍼, 송신 버퍼, 및 송신 라인 버퍼로 분할되는 통신 제어 시스템.
  11. 청구항 10에 있어서, 상기 수신 버퍼는 수신 버퍼 큐 및 수신 디스크립터 큐로 분할되는 통신 제어 시스템.
  12. 청구항 11에 있어서, 상기 수신 버퍼 큐는 상기 물리적 계층 제어기로부터 상기 서비스 패킷을 수신하는 통신 제어 시스템.
  13. 청구항 12에 있어서, 상기 수신된 버퍼 큐는 상기 수신 디스크립터 큐에 의해 정의되고 제어되는 통신 제어 시스템.
  14. 청구항 10에 있어서, 상기 수신 라인 버퍼는 수신 라인 버퍼 디스크립터 및 수신 라인 버퍼 엔트리 큐로 분할되는 통신 제어 시스템.
  15. 청구항 14에 있어서, 포트 제어 전송 제어기(TC) 및 버스를 더 포함하고, 상기 포트 제어 TC는 상기 버스를 통해 상기 네트워크 CPU 및 상기 메모리와 연결되는 통신 제어 시스템.
  16. 청구항 10에 있어서, 상기 제 2 네트워크로부터 수신되는 패킷들은 상기 수신 라인 버퍼 엔트리 큐에 저장되고, 상기 수신 라인 버퍼 디스크립터는 상기 수신 라인 버퍼 엔트리 큐 내에서 연관되는 엔트리가 상기 제 2 네트워크로부터 새로 수신되는 패킷을 수용하는데 이용가능한지를 표시하는 소유자 플래그(owner flag)를 포함하는 통신 제어 시스템.
  17. 청구항 10에 있어서, 상기 송신 버퍼는 송신 디스크립터 큐 및 송신 버퍼 큐로 분할되는 통신 제어 시스템.
  18. 청구항 17에 있어서, 상기 물리적 계층 제어기는 상기 서비스 패킷을 기술하는 정보로 각각의 수신된 서비스 패킷에 대한 송신 디스크립터 큐를 로딩하는 통신 제어 시스템.
  19. 청구항 10에 있어서, 상기 송신 라인 버퍼는 송신 라인 버퍼 엔트리 큐 및 송신 라인 버퍼 디스크립터로 분할되는 통신 제어 시스템.
  20. 청구항 6에 있어서, 패킷 데이터 유닛들을 정의하는 것은 상기 패킷 데이터 유닛들의 크기를 결정하는 제어 가능 파라미터에 대한 값을 선택하는 것을 포함하는 통신 제어 시스템.
  21. 청구항 20에 있어서, 상기 제어 가능 파라미터에 대한 값은 자동으로 선택되는 통신 제어 시스템.
  22. 청구항 20에 있어서, 상기 제어 가능 파라미터에 대한 값은 수동으로 선택되는 통신 제어 시스템.
  23. 제 1 프로토콜에 따라 동작하고 데이터의 제 1 패킷들로부터의 콘텐츠의 적어도 일부를 포함하는 데이터의 제 2 패킷들을 준비하는 네트워크로부터 데이터의 제 1 패킷들을 수신하기 위한 방법으로서, 상기 제 2 패킷들은 제 2 프로토콜을 갖는 제 2 네트워크를 통한 송신에 준비되어 있는, 수신 방법에 있어서:
    a) 데이터의 제 1 패킷들을 수신하는 단계;
    b) 데이터의 제 1 패킷들을 선택적으로 고정된 크기들의 패킷 데이터 유닛(packet data unit: PDU)들로 단편화하는 단계; 및
    c) 상기 단편화된 제 1 패킷들로부터의 PDU들을 상기 제 2 패킷들 기반으로 수집하는 단계를 포함하고, 동일한 제 2 패킷들에서 송신되는 각각의 PDU는 공통 목적지 및 우선순위를 갖는 네트워크로부터 데이터의 제 1 패킷들을 수신하기 위한 방법.
  24. 컴퓨터에 의해 판독되는 명령들을 저장하기 위한 유형의 저장 매체에 있어서, 상기 명령들은 상기 컴퓨터로 하여금:
    a) 상기 데이터의 제 1 패킷들을 수신하고;
    b) 상기 제 1 패킷들을 선택적으로 고정되는 크기들의 패킷 데이터 유닛들(PDU들)로 단편화하고;
    c) 상기 단편화된 제 1 패킷들로부터의 PDU들을 상기 제 2 패킷들 기반으로 수집하는 기능들을 실행하도록 하고, 동일한 제 2 패킷들에서 송신되는 각각의 PDU는 공통 목적지 및 우선순위를 갖는 유형의 저장 매체.
  25. 컴퓨터에 의해 판독되는 명령들을 저장하기 위한 유형의 저장 매체에 있어서, 상기 명령들은 상기 컴퓨터로 하여금:
    a) 적어도 하나의 수신 디스크립터를 생성하고;
    b) 제 1 네트워크로부터 서비스 패킷들을 수신하고;
    c) 상기 수신 디스크립터의 콘텐츠에 기초하여 상기 메모리 내에 상기 서비스 패킷들을 저장하고;
    d) 모두 길이가 동일한 패킷 데이터 유닛들을 정의하고;
    e) 각각의 패킷 데이터 유닛에 대한 프로토콜 디스크립터들을 생성하고;
    f) 상기 메모리 내에서 프로토콜 디스크립터 큐에서의 엔트리에 각각의 프로토콜 디스크립터를 저장하는 기능들을 실행하도록 하는 유형의 저장 매체.
KR1020117007389A 2008-12-24 2009-12-18 관리되는 네트워크를 통해 계층-2에서의 패킷 수집 및 단편화 KR20110110088A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/343,941 2008-12-24
US12/343,941 US8811411B2 (en) 2008-12-24 2008-12-24 Packet aggregation and fragmentation at layer-2 over a managed network

Publications (1)

Publication Number Publication Date
KR20110110088A true KR20110110088A (ko) 2011-10-06

Family

ID=42266004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117007389A KR20110110088A (ko) 2008-12-24 2009-12-18 관리되는 네트워크를 통해 계층-2에서의 패킷 수집 및 단편화

Country Status (7)

Country Link
US (1) US8811411B2 (ko)
EP (1) EP2353017B1 (ko)
JP (1) JP5640234B2 (ko)
KR (1) KR20110110088A (ko)
CN (1) CN102171580B (ko)
HK (1) HK1154942A1 (ko)
WO (1) WO2010075201A1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60143313D1 (de) * 2000-08-30 2010-12-02 Tmt Coaxial Networks Inc Verfahren und system fur ein hausnetzwerk
US9094226B2 (en) * 2000-08-30 2015-07-28 Broadcom Corporation Home network system and method
US8724485B2 (en) * 2000-08-30 2014-05-13 Broadcom Corporation Home network system and method
US7742495B2 (en) 2006-11-20 2010-06-22 Broadcom Corporation System and method for retransmitting packets over a network of communication channels
US7782850B2 (en) 2006-11-20 2010-08-24 Broadcom Corporation MAC to PHY interface apparatus and methods for transmission of packets through a communications network
US8090043B2 (en) 2006-11-20 2012-01-03 Broadcom Corporation Apparatus and methods for compensating for signal imbalance in a receiver
US8345553B2 (en) * 2007-05-31 2013-01-01 Broadcom Corporation Apparatus and methods for reduction of transmission delay in a communication network
US9112717B2 (en) 2008-07-31 2015-08-18 Broadcom Corporation Systems and methods for providing a MoCA power management strategy
US8213309B2 (en) 2008-12-22 2012-07-03 Broadcom Corporation Systems and methods for reducing latency and reservation request overhead in a communications network
US8254413B2 (en) * 2008-12-22 2012-08-28 Broadcom Corporation Systems and methods for physical layer (“PHY”) concatenation in a multimedia over coax alliance network
US8238227B2 (en) 2008-12-22 2012-08-07 Broadcom Corporation Systems and methods for providing a MoCA improved performance for short burst packets
US20100238932A1 (en) * 2009-03-19 2010-09-23 Broadcom Corporation Method and apparatus for enhanced packet aggregation
US8553547B2 (en) * 2009-03-30 2013-10-08 Broadcom Corporation Systems and methods for retransmitting packets over a network of communication channels
US20100254278A1 (en) 2009-04-07 2010-10-07 Broadcom Corporation Assessment in an information network
US8730798B2 (en) * 2009-05-05 2014-05-20 Broadcom Corporation Transmitter channel throughput in an information network
DE102009023199A1 (de) * 2009-05-29 2010-12-02 Siemens Aktiengesellschaft Kommunikationssystem
US8867355B2 (en) 2009-07-14 2014-10-21 Broadcom Corporation MoCA multicast handling
US8942250B2 (en) 2009-10-07 2015-01-27 Broadcom Corporation Systems and methods for providing service (“SRV”) node selection
US8635347B2 (en) 2010-01-26 2014-01-21 Ray W. Sanders Apparatus and method for synchronized networks
JP5446935B2 (ja) * 2010-01-28 2014-03-19 富士ゼロックス株式会社 送信装置、通信システム、画像形成システム、及びプログラム
US8611327B2 (en) 2010-02-22 2013-12-17 Broadcom Corporation Method and apparatus for policing a QoS flow in a MoCA 2.0 network
US8514860B2 (en) * 2010-02-23 2013-08-20 Broadcom Corporation Systems and methods for implementing a high throughput mode for a MoCA device
WO2013134732A1 (en) * 2012-03-09 2013-09-12 Sanders Ray W Apparatus and methods of routing with control vectors in a synchronized adaptive infrastructure (sain) network
CN102682112B (zh) * 2012-05-11 2014-11-19 华为技术有限公司 存储方法和装置
US9625327B1 (en) 2012-11-14 2017-04-18 E-Controlsystems, Inc. Device and method for logging data from an inspection probe to a computing device
US9398117B2 (en) * 2013-09-26 2016-07-19 Netapp, Inc. Protocol data unit interface
WO2015199420A1 (ko) 2014-06-24 2015-12-30 삼성전자 주식회사 방송 시스템에서 시스템 시간 정보를 송수신하는 기법
US20160320967A1 (en) * 2015-04-29 2016-11-03 Broadcom Corporation Receive Side Packet Aggregation
WO2017033764A1 (ja) * 2015-08-26 2017-03-02 ソニー株式会社 記録装置、および記録方法、並びにプログラム
US10021595B2 (en) * 2015-12-09 2018-07-10 Intel IP Corporation Aggregation procedures for a media access control layer
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
US11252109B1 (en) * 2018-09-21 2022-02-15 Marvell Asia Pte Ltd Out of order placement of data in network devices
CN109408428B (zh) * 2018-10-29 2021-05-28 京信通信系统(中国)有限公司 直接内存存取的控制方法、装置及物理层加速卡
US11057447B2 (en) * 2019-11-21 2021-07-06 T-Mobile Usa, Inc. Uniform packet streaming
US11909841B2 (en) * 2020-05-29 2024-02-20 Intel Corporation System, apparatus and method for adaptive peer-to-peer communication with edge platform
TWI745034B (zh) 2020-08-18 2021-11-01 國立陽明交通大學 封包聚合及解聚合方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7495220B2 (en) * 1995-10-24 2009-02-24 Bae Systems Information And Electronics Systems Integration Inc. Uncooled infrared sensor
JPH11345175A (ja) * 1998-06-02 1999-12-14 Nec Kofu Ltd 代替パス制御システム及び方法
JP3490000B2 (ja) * 1998-09-28 2004-01-26 株式会社日立製作所 サーバ・システムおよびクライアント・サーバ間の通信方法
JP2000332817A (ja) 1999-05-18 2000-11-30 Fujitsu Ltd パケット処理装置
US8266657B2 (en) * 2001-03-15 2012-09-11 Sling Media Inc. Method for effectively implementing a multi-room television system
JP3895888B2 (ja) 1999-06-29 2007-03-22 株式会社日立製作所 パケット通信方法およびノード装置
EP1104141A3 (en) 1999-11-29 2004-01-21 Lucent Technologies Inc. System for generating composite packets
KR100608043B1 (ko) * 1999-12-31 2006-08-02 삼성전자주식회사 오디오 데이터를 비디오 데이터와 연결해서 재생 가능한데이터 구조로 기록된 기록 매체, 기록/재생 방법 및 장치
US6956818B1 (en) * 2000-02-23 2005-10-18 Sun Microsystems, Inc. Method and apparatus for dynamic class-based packet scheduling
JP2002026927A (ja) * 2000-07-10 2002-01-25 Pfu Ltd カプセリング方法及び装置並びにプログラム記録媒体
WO2002061592A1 (en) * 2001-01-31 2002-08-08 International Business Machines Corporation Method and apparatus for controlling flow of data between data processing systems via a memory
US7170893B2 (en) * 2001-06-15 2007-01-30 Lucent Technologies Inc. Technique for selecting the number of packets to be concatenated
US7245627B2 (en) * 2002-04-23 2007-07-17 Mellanox Technologies Ltd. Sharing a network interface card among multiple hosts
JP2004336527A (ja) * 2003-05-09 2004-11-25 Pioneer Electronic Corp データ処理装置、そのシステム、その方法、そのプログラム、および、そのプログラムを記録した記録媒体
FR2859059A1 (fr) 2003-08-20 2005-02-25 France Telecom Procede de transmission de paquets, dispositifs d'agregation et de desagregation de paquets
US7111092B1 (en) * 2004-04-16 2006-09-19 Cisco Technology, Inc. Buffer management technique for a hypertransport data path protocol
JP4437314B2 (ja) * 2004-07-23 2010-03-24 株式会社日立製作所 Atmセル転送ノード装置
KR100631271B1 (ko) 2004-08-07 2006-10-02 삼성전자주식회사 패킷 응집 전송 방법
US7447233B2 (en) 2004-09-29 2008-11-04 Intel Corporation Packet aggregation protocol for advanced switching
US20060067348A1 (en) * 2004-09-30 2006-03-30 Sanjeev Jain System and method for efficient memory access of queue control data structures
JP2006311464A (ja) 2005-04-01 2006-11-09 Ntt Docomo Inc Ipパケットマッピング方法
US7697522B2 (en) * 2006-11-20 2010-04-13 Broadcom Corporation Systems and methods for aggregation of packets for transmission through a communications network
US20080120675A1 (en) * 2006-11-22 2008-05-22 Horizon Semiconductors Ltd. Home gateway for multiple units
JP5266257B2 (ja) * 2007-02-06 2013-08-21 テレフオンアクチーボラゲット エル エム エリクソン(パブル) フレキシブルな無線リンク制御パケットデータユニット長

Also Published As

Publication number Publication date
EP2353017A4 (en) 2014-06-25
US20100158015A1 (en) 2010-06-24
US8811411B2 (en) 2014-08-19
CN102171580A (zh) 2011-08-31
JP2012514388A (ja) 2012-06-21
CN102171580B (zh) 2015-03-18
HK1154942A1 (zh) 2012-05-04
EP2353017B1 (en) 2016-04-13
EP2353017A1 (en) 2011-08-10
WO2010075201A1 (en) 2010-07-01
JP5640234B2 (ja) 2014-12-17

Similar Documents

Publication Publication Date Title
US8811411B2 (en) Packet aggregation and fragmentation at layer-2 over a managed network
US7177956B2 (en) Ingress processing optimization via traffic classification and grouping
US6925055B1 (en) Systems and methods for traffic shaping
US8599870B2 (en) Channel service manager with priority queuing
US6798776B1 (en) Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network
US5619497A (en) Method and apparatus for reordering frames
CA2310909C (en) Packet switching apparatus and method in data network
US9083655B2 (en) Internal cut-through for distributed switches
US11637786B1 (en) Multi-destination traffic handling optimizations in a network device
US7307998B1 (en) Computer system and network interface supporting dynamically optimized receive buffer queues
US20060280194A1 (en) Apparatus and method for configuring buffer descriptor suitable for packet aggregation
US20060045009A1 (en) Device and method for managing oversubsription in a network
US11159440B2 (en) Hybrid packet memory for buffering packets in network devices
US9401879B1 (en) Systems and methods for sending and receiving information via a network device
CN114531488A (zh) 一种面向以太网交换器的高效缓存管理系统
US7020712B1 (en) Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router
CN111352657B (zh) FPGA高速高效流水读取x86数据的方法
US6947437B1 (en) Programmable output queues in a network device
CN112615796B (zh) 一种兼顾存储利用率与管理复杂度的队列管理系统
CN110661731B (zh) 一种报文处理方法及其装置
CN117951051A (zh) 聚合小型远程存储器访问请求
WO2007047866A2 (en) Using cascaded devices to expand oversubscription ratio

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application