KR20030019608A - 공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치및 방법 - Google Patents

공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치및 방법 Download PDF

Info

Publication number
KR20030019608A
KR20030019608A KR10-2003-7001038A KR20037001038A KR20030019608A KR 20030019608 A KR20030019608 A KR 20030019608A KR 20037001038 A KR20037001038 A KR 20037001038A KR 20030019608 A KR20030019608 A KR 20030019608A
Authority
KR
South Korea
Prior art keywords
pool
buffers
shared memory
shared
free
Prior art date
Application number
KR10-2003-7001038A
Other languages
English (en)
Other versions
KR100812750B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24501343&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20030019608(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 모사이드 테크놀로지스 인코포레이티드 filed Critical 모사이드 테크놀로지스 인코포레이티드
Publication of KR20030019608A publication Critical patent/KR20030019608A/ko
Application granted granted Critical
Publication of KR100812750B1 publication Critical patent/KR100812750B1/ko

Links

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/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • 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/9047Buffering arrangements including multiple buffers, e.g. buffer pools

Landscapes

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

Abstract

본 발명은 공유 메모리에 버퍼의 예약 풀을 포함하는 스위치에 관한 것으로. 버퍼의 예약 풀은 인출 포트에 의해 한정되는 사용을 위해 예약되며, 스위치는 인입 포트로부터 수신된 데이터를 저장하여 인출 포트로 전송하기 위해 예약 풀로부터 여유 버퍼를 선택하는 풀 선택 로직을 포함하고, 버퍼의 공유 풀은 복수개의 인출 포트에 의해 공유되며, 풀 선택 로직은 예약 풀에서 여유 버퍼가 발견되지 않을 때 공유 풀에서 여유 버퍼를 선택하고, 또한, 공유 메모리는 버퍼의 멀티캐스트 풀을 포함하며, 버퍼의 멀티캐스트 풀은 복수개의 인출 포트에 의해 공유되고, 풀 선택 로직은 인입 포트로부터 수신된 IP 멀티캐스트 데이터 패킷을 검출하는데 있어서 멀티캐스트 풀에서 여유 버퍼를 선택하는 스위치에 관한 것이다.

Description

공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치 및 방법{METHOD AND APPARATUS FOR REDUCING POOL STARVATION IN A SHARED MEMORY SWITCH}
네트워킹 스위치는 인입 포트에서 데이터 패킷을 수신하여 하나 이상의 인출 포트로 상기 데이터 패킷을 전송한다. 상기 스위치는 데이터 패킷에 포함된 수신지 어드레스에 따라 데이터 패킷이 전송될 하나의 인출 포트 또는 인출 포트들을 결정한다. 인입 포트로부터 수신된 데이터 패킷은 전송되기 전에 스위치 내의 메모리에 저장된다.
스위치 내의 메모리는 모든 수신된 데이터 패킷이 전송되기 전에 저장되는 공유 메모리이다. 수신된 데이터가 공유 메모리에 저장될 때, 데이터 패킷 포인터, 즉 공유 메모리의 수신된 데이터의 위치에 대한 포인터는 하나 이상의 큐(queue)에 저장된다. 상기 데이터 패킷 포인터는 수신된 인입 포트 또는 전송될 인출 포트에 따라 대기될 수도 있다. 출력 버퍼 스위치는 전송될 인출 포트에 따라 데이터 패킷 포인터를 대기시킨다.
상기 공유 메모리는 모든 인출 포트에 의해 공유되고, 하나의 위치는 하나의 인출 포트에 무작위로 할당되어, 상기 인출 포트로 전송된다. 각 인출 포트를 통해 전송된 데이터 패킷의 수는 급변하여 특정 인출 포트에서의 일시적인 정체(congestion)를 야기한다. 일시적인 정체는, 복수개의 인입 포트로부터 수신된 데이터 패킷이 동일한 인출 포트를 통해 전송될 때, 또는 인입 포트와 인출 포트 사이의 속도 부정합이 존재하는 경우(예를 들어, 인입 포트가 1 Gbps의 속도로 데이터를 수신하고, 인출 포트가 100 Mbps의 속도로 데이터를 전송하는 경우), 인출 포트에서 발생한다.
도 1은 공유 메모리 스위치의 블럭도이고,
도 2는 예약 풀, 공유 풀 및 멀티캐스트 풀을 예시하는 도 1에 도시된 공유 메모리의 블럭도이며,
도 3은 도 1에 도시된 패킷 저장 관리자의 풀 선택 로직의 블럭도이고,
도 4는 도 3에 도시된 풀 카운터의 블럭도이며,
도 5는 도 3에 도시된 풀 카운터 로직에서 실시된 풀을 선택하기 위한 단계를 예시하는 플로우챠트이고,
도 6은 도 3에 도시된 풀 카운터 로직에서 실시된 풀로 버퍼를 되돌리기 위한 단계를 예시하는 플로우챠트이다.
공유 메모리는 정체된 인출 포트에 의해 사용될 더 많은 메모리를 제공하지만, 모든 공유 메모리는 정체된 인출 포트에 대한 데이터를 저장하는데 소모되어, 비정체된 인출 포트로 전송되는 데이터를 저장하기 위한 메모리는 남지 않는다. 이로인해 비정체된 인출 포트에 대해 데이터 패킷이 드롭(drop)된다.
본 발명에 따라, 공유 메모리 내에 버퍼의 예약 풀(reserved pool)을 포함하는 공유 메모리 스위치가 개시된다. 상기 버퍼의 예약 풀은 인출 포트를 위해 예약된다. 상기 스위치는 인출 포트로 전송될 인입 포트로부터 수신된 데이터를 저장하기 위한 여유 버퍼를 예약 풀로부터 선택하는 풀 선택 로직을 포함한다.
또한, 상기 공유 메모리는 버퍼들의 공유 풀을 포함한다. 상기 버퍼의 공유 풀은 복수개의 인출 포트에 의해 공유된다. 상기 예약 풀에서 여유 버퍼가 없는 것으로 검출되면, 상기 풀 선택 로직은 공유 풀에서 여유 버퍼를 선택한다.
또한, 상기 공유 메모리는 버퍼들의 멀티캐스트 풀을 포함한다. 상기 버퍼의 멀티캐스트 풀은 복수개의 인출 포트에 의해 공유된다. 상기 풀 선택 로직은 인입 포트로부터 수신된 IP 멀티캐스트 데이터 패킷을 검출하면 멀티캐스트 풀에서 여유 버퍼를 선택한다.
전술한 본 발명의 또다른 목적, 특징 및 장점은 하기 바람직한 실시예를 참조하여 본 발명을 상세하게 설명하며, 첨부 도면에 도시된 바와 같이, 도면전체에 걸쳐 동일한 부분에는 동일한 참조번호가 사용된다. 상기 도면은 본 발명의 원리를 설명하기 위해 반드시 스케일링되거나 강조되어야 하는 것은 아니다.
이하, 본 발명의 바람직한 실시예를 설명한다.
도 1은 공유 메모리 스위치(100)의 블럭도이다. 인입 포트(102)를 통해 수신된 모든 데이터는 하나 이상의 인출 포트(1120-n)로 전송되기 전에 공유 메모리(108)에 저장된다. 패킷 저장 관리자(106)는 공유 메모리(108)로의 읽기 및쓰기 액세스를 제어한다. 상기 패킷 저장 관리자(106)는 풀 선택 로직(124)을 포함한다. 상기 풀 선택 로직(124)은 도 2에 예시된 바와 같이, 공유 메모리(108)를 논리적으로 공유 풀, 멀티캐스트 및 복수개의 예약 풀로 분할한다. 상기 공유 메로리(108)의 실제적인 물리적 분할은 존재하지 않는다.
상기 풀 선택 로직(124)은 버퍼를 할당할 풀을 선택함으로써 각 풀의 버퍼를 관리한다. 버퍼는 인출 포트(112)에 할당된 버퍼의 수가 예약된 임계값 계수보다 작으면, 인출 포트의 예약 풀로부터 할당된다. 상기 풀 선택 로직(124)은 도 2에 다시 설명되어 있다. 공유 메모리(108)에 대한 읽기 및 쓰기 액세스는 1999년 8월 31일 출원된 미국특허 출원번호 제09/386,589호, "인터리브된 비블럭킹 패킷 버퍼의 장치 및 방법(Method and Apparatus for an Interleaved Non-Blocking Packet Buffer)"(발명자 David A. Brown)에 개시되어 있으며, 그 전문은 본 발명의 명세서에 참고문헌으로 일체화된다.
상기 스위치(100)는 인입 포트 엔진(104)과 인출 포트 엔진(110)을 포함한다. 데이터 패킷은 인입 포트(102)에서 직렬로 수신된다. 상기 인입 엔진(104)은 상기 수신된 데이터 패킷에서 헤더를 검출 및 처리하고, 검출된 헤더로부터 데이터 패킷을 어느 인출 포트(1120-n)로 전송할지를 결정하여, 상기 데이터 패킷에 대한 순방향 벡터(114)를 생성한다. 상기 순방향 벡터(114)는 복수개의 인출 포트(1120-n) 각각에 대응하는 비트를 지닌 비트 맵(bit map)이며, 상기 데이터 패킷이 그 인출 포트(1120-n)로 전송될지 아닐지를 지시한다. 순방향 벡터(114)를 생성하기 위한 장치 및 방법은 1999년 12월 1일에 출원된 미국특허 출원번호 제09/453,344호, "유선 속도 IP 멀티캐스트 전송 방법 및 장치(Method and Apparatus for Wire-Speed IP Multicast Forwarding)"(발명자 David A. Brown)에 개시되어 있으며, 그 전문은 본 명세서에 참고문헌으로 일체화된다. 상기 순방향 벡터(114)는 패킷 저장 관리자(106)로 전송된다.
상기 패킷 저장 관리자(106)는 공유 메모리(108)에 쓰기 및 읽기 연산을 하기 위한 공유 메모리 어드레스(122)를 제공하여, 하나 이상의 인출 포트 큐(미도시)에 저장된 각 데이터 패킷의 공유 메모리(108) 내의 위치를 저장한다. 인출 포트 큐를 제공하는 방법 및 장치는 2000년 4월 27일 출원된 미국특허 출원번호 제09/559,190호. "포트 패킷 큐잉(Port Packet Queuing)"(발명자 Richard M. Wyatt)에 개시되어 있으며, 그 전문은 본 명세서에 참고문헌으로 일체화된다. 상기 인출 엔진(110)은 데이터 패킷을 전송하도록 선택(120)을 통해 복수개의 인출 포트(1120-n) 중 하나를 선택하며, 상기 저장된 데이터 패킷을 상기 선택된 인출 포트(1120-n)로 전달한다.
상기 공유 메모리(108)는 인출 포트(1120-n) 중 임의의 인출 포트로 전송할, 임의의 인입 포트(102)로부터 수신된 데이터 패킷을 저장한다. 스위치(100)는 인입 포트(102)에서 수신된 데이터 패킷의 인입 포트 엔진(104)에 의한 처리와, 인출 포트(1120-n)로 전송할 인출 포트 엔진(110)에 의한 저장된 데이터 패킷에 대한 처리를 동시에 제공한다.
데이터 패킷이 하나의 인입 포트(102)에서 직렬로 수신될 때, 상기 직렬 데이터는 데이터 세그먼트들로 군을 이루게 된다. 각각의 데이터 세그먼트는 공유 메로리(108) 내의 버퍼에 저장된다. 따라서, 버퍼의 크기는 데이터 세그먼트 크기에 좌우된다. 데이터 세그먼트의 크기는 스위치(100)에 의해 지원되는 네트워킹 프로토콜에 따라 좌우된다. 예를 들면, 이더넷 네트워킹 프로토콜에 대하여, 데이터 세그먼트를 위해 선택된 크기는 64 바이트이며, 이는 이더넷 데이터 패킷을 위한 최소 데이터 패킷 크기가 64 바이트이기 때문이다.
또한, 상기 인입 포트 엔진(104)은 데이터 패킷이 IP 멀티캐스트 데이터 패킷이라면, 수신된 데이터 패킷에 포함된 헤더로부터 결정한다. 상기 스위치(100)는 IP 멀티캐스트 데이터 패킷의 사본을 IP 멀티캐스트 그룹의 각 멤버로 전송한다. 상기 데이터 패킷의 단일 사본은 멀티캐스트 전송 인덱스(Multicast Forwarding Index"MFI")와 함께 공유 메모리(108)에 저장되며, 상기 MFI는 1999년 12월 1일에 출원된 미국특허 출원번호 제09/453,344호, "유선 속도 IP 멀티캐스트 전송 방법 및 장치(Method and Apparatus for Wire-Speed IP Multicast Forwarding)"(발명자 David A. Brown)에 개시되어 있으며, 그 전문은 본 발명의 명세서에 참고문헌으로 일체화된다. 상기 IP 멀티캐스트 그룹의 멤버는 동일한 인출 포트(112)에 연결되어 있거나, 하나 이상의 인출 포트(112)에 연결되어 있다. IP 멀티캐스트 데이터 패킷의 다수개의 사본은 인출 포트(112)로 전송되며, 이는 상기 인출 포트(112)에 연결된 IP 멀티캐스트 그룹의 각 멤버의 하나이다. 상기 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷이라면, 인입 포트 엔진(104)은 상기 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷임을 지시하는 순방향 벡터(114)와 함께 멀티캐스트 태그(126)를 전송한다. 상기 멀티캐스트 태그(126)는 상기 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷인지 아닌지를 지시한다. 상기 멀티캐스트 태그(126)는 상기 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷이면, 단일 비트를 '1'로 설정함으로써 실시될 수 있다.
도 2는 공유 풀(200), 멀티캐스트 풀(204) 및 복수개의 예약 풀(2020-202n)로 논리적으로 할당된 도 1에 도시된 공유 메모리(108)의 블럭도이다. 예약 풀(2020-202n)은 각각의 인출 포트(1120-n)를 위해 제공된다. 버퍼의 예약 임계값 카운트는 각각의 예약 풀(2020-202n)에 할당된다. 상기 버퍼의 예약 임계값 카운트는 각각의 인출 포트(112)에 대한 데이터 패킷을 저장할 때만 할당될 수 있다. 상기 공유 풀(200)은 데이터 패킷을 저장하여 임의의 인출 포트(1120-n)로 전송하기 위해 제공된다. 상기 멀티캐스트 풀(204)은 IP 멀티캐스트 데이터 패킷을 저장하여 임의의 인출 포트(1120-n)로 전송하기 위하여 제공된다.
버퍼가 인출 포트 예약 풀(2020-n)로부터 할당되는 반면, 할당된 버퍼의 카운트는 임계값 카운트보다 낮다. 예약된 할당가능한 버퍼의 수가 초과되면, 버퍼는 공유 풀(200)로부터 할당된다. 데이터 패킷을 위한 버퍼는 인출 포트(1120-n)와 함께 할당된 각각의 예약 풀(2020-202n)로부터만 할당될 수 있다. 따라서, 공유풀(200) 내의 모든 버퍼가 하나의 정체된 인출 포트(1120-n)로 할당되었다 할지라도, 버퍼는 정체되지 않은 포트의 각각의 예약 풀(2020-202n)로부터 정체되지 않은 포트에 대한 할당이 가능하다.
상기 데이터 패킷이 IP 멀티캐스트 데이터 패킷이라면, 데이터 패킷은 일단 공유 메모리(108)에 저장되며, 저장된 데이터 패킷의 사본이 IP 멀티캐스트 그룹의 멤버로 전송된다. 상기 IP 멀티캐스트 데이터 패킷이 IP 멀티캐스트 그룹의 각각의 멤버로 전송될 때까지, 상기 IP 멀티캐스트 데이터 패킷은 공유 메모리(108)에 저장된다.
상기 저장된 IP 멀티캐스트 데이터 패킷이 하나 이상의 인출 포트(112)로 전송될 때, IP 멀티캐스트 데이터 패킷을 저장하기 위한 버퍼를 할당하기 위하여 포트 예약 풀(202)을 선택한다. 또한, IP 멀티캐스트 데이터 패킷을 독립적으로 설명하지 않고서는, IP 멀티캐스트 데이터 패킷이 예약 풀(202) 또는 공유 풀(200)로부터인지 아닌지를 디큐(dequeue)하고 있을 때 결정될 수 없으며, 이는 상기 버퍼가 최종 IP 멀티캐스트 데이터 패킷이 전송되는 인출 포트에 대한 예약 풀로부터 할당되지 않기 때문이다. 스위치(100)는 IP 멀티캐스트 데이터 패킷을 저장하기 위한 독립된 풀을 가짐으로써 버퍼 리소스(buffer resource)의 수를 제한하게 되며, 상기 버퍼 리소스는 IP 멀티캐스트 데이터 패킷을 저장하기 위하여 소모될 수 있다. 따라서, 멀티캐스트 풀(204)은 IP 멀티캐스트 데이터 패킷을 저장하도록 제공된다.
도 3은 도 1에 도시된 패킷 저장 관리자(106) 내의 풀 선택 로직(124)의 블럭도이다. 상기 풀 선택 로직(124)은 풀 카운터(300)와 풀 카운터 로직(302)을 포함한다. 상기 풀 카운터(300)는 공유 메모리(108) 내에서 각각의 풀(200, 2020-202n, 204)을 위한 카운터를 포함한다. 상기 카운터 스테이터스(counter status)(304)는 풀 카운터 로직(302)으로 전송된다.
상기 풀 카운터 로직(302)은 공유 메모리(108)에 저장되도록 상기 수신된 데이터 패킷을 위한 카운터 스테이터스(304), 순방향 벡터(114) 및 멀티캐스트 태그(126)의 상태에 따라 버퍼를 할당하도록 풀(200, 2020-202n또는 204)을 선택한다. 상기 풀(200, 2020-202n또는 204)을 선택한 후, 상기 풀 카운터 로직(302)은 풀 카운터(300)에서 각각의 카운터를 증대 또는 감소시키기 위하여 카운터 증대-감소(306)를 생성한다. 또한, 상기 풀 카운터 로직(302)은 사용가능_버퍼(308)를 생성한다. 상기 사용가능_버퍼(308)의 상태는 버퍼가 공유 메모리(108)에 수신된 비-멀티캐스트 데이터 패킷을 저장할 수 있는지 없는지를 지시한다. 버퍼가 공유 풀(200) 또는 포트 예약 풀(202)에 비-멀티캐스트 데이터 패킷을 저장할 수 없다면, 또는 멀티캐스트 풀(204)에 멀티캐스트 데이터 패킷을 저장할 수 없다면, 상기 수신된 데이터 패킷은 드롭된다.
버퍼가 수신된 데이터를 저장하여 인출 포트로 전송하는 것이 가능하다면, 버퍼는 공유 메모리(108) 내의 버퍼의 여유 리스트로부터 할당되며, 이는 1999년 8월 31일에 출원된 미국특허 출원번호 제09/386,589호, "인터리브 비블럭킹 패킷 버퍼의 장치 및 방법(Method and Apparatus for an Interleaved Non-Blocking Packet Buffer)"(발명자 David A. Brown)에 개시되어 있으며, 그 전문은 본 발명의 명세서에 참고문헌으로 일체화된다.
도 4는 도 3에 도시된 풀 카운터(300)의 블럭도이다. 상기 풀 카운터(300)는 공유 여유 카운터(400), 총 여유 카운터(402), 멀티캐스트 여유 카운터(416), 예약 여유 카운터(428), 큐 예약 임계값 레지스터(412), 및 스위치(100) 내의 각각의 인출 포트(1120-n)에 대한 포트 예약 풀 카운터(4140-n)를 포함한다.
상기 총 여유 카운터(402)는 공유 메모리(108) 내에 여유 버퍼의 총 수를 저장한다. 상기 총 여유 카운터(402)는 공유 풀(200), 포트 예약 풀(2020-202n) 및 멀티캐스트 풀(204)에서 버퍼의 합으로 기설정(preset) 한다. 상기 총 여유 카운터(402)는 버퍼가 데이터 패킷을 저장하기 위하여 임의의 풀로부터 할당되는 각 시간을 감소시킨다. 풀이 예약=500, 공유=200, 멀티캐스트=500 으로 선정되면, 버퍼의 합은 사용가능한 버퍼의 총 수와 동일한 3000이다. IP 멀티캐스트 데이터 패킷은 일단 멀티캐스트 풀(204) 내에 상기 500 데이터 패킷이 사용되고 있다면(비록 공유 풀(200) 내에 사용가능한 버퍼가 있다하더라도) 드롭된다.
스위치에서는 일정한 양의 "튜닝"이 요구된다. 상기 튜닝은 정체되는 동안 데이터 패킷이 드롭될 가능성을 감소시키기 위하여 상기 공유 메모리(108)를 어떻게 분할할지를 결정하는 것을 포함한다. 가장 심한 정체는 출력 포트에서 버스트의 데이터 충돌이 존재할 때 발생한다. 버스트 길이와 같은 요소 및 그밖의 다른요소에 좌우되어, 드롭 가능성은 공유 메모리(108) 내의 풀의 전체 예약 비율에 좌우되어 변한다. 따라서, 공유 메모리(108) 내에서 풀에 대한 임계값은 예상되는 로드 조건에 따라 수정가능하다.
선택적인 실시예에서, 풀(200, 2020-202n및 204)은 초과 예약된다. 총 여유 카운터(402)는 공유 메모리(108) 내의 물리적 버퍼의 전체 수로 초기화된다. 공유 풀(200) 내의 버퍼의 합, 포트 예약 풀(2020-202n), 및 멀티캐스트 풀(204)은 총 여유 카운터(402)에 저장된 카운트보다 더 크다. 이로인해 버퍼는 공유 메모리(108)에서 더 잘 활용할 수 있으나, 포트 예약 풀(202)에서 사용가능한 버퍼의 존재를 보장하는 것을 감소시킨다.
예를 들어, 풀이 예약 풀=1000; 공유 풀=2000; 멀티캐스트 풀=1000 으로 선정되면, 버퍼의 합은 4000이지만, 공유 메모리(108) 내에서 사용가능한 버퍼의 총 수는 3000이다. 즉, 풀에서의 버퍼의 합보다 작다. 이로인해 스위치(100)를 통해 유니케스트(unicast) 및 브로드케스트(broadcast) 데이터 트래픽보다 멀티캐스트 데이터 트래픽이 더 많이 존재한다면 공유 메모리(108)에서 버퍼의 활용은 더 증대되며, 이는 사용가능한 버퍼의 전체 수의 1/3이 IP 멀티캐스트 데이터 패킷을 저장하도록 할당되기 때문이다.
상기 멀티캐스트 풀(204)이 초과 예약되지 않는다면, 멀티캐스트 데이터 패킷은 멀티캐스트 풀(204)이 찰 때(심지어 공유 메모리(108)에 사용가능한 버퍼가 존재할 때) 드롭된다. 따라서, 초과 예약을 함으로써, 공유 메모리(108)에서 사용가능한 버퍼가 존재할 때 데이터 패킷은 쉽게 드롭되지 않는다. 그러나, 단점은 각각의 포트 예약 풀(202)이 그 예약 임계값보다 낮을 때 조차도 버퍼가 정체되지 않은 포트에 대한 예약 풀이 불가능하다는 것이다.
상기 공유 여유 카운터(400)는 공유 풀(200)에서 가용 또는 여유 버퍼의 수를 저장한다. 공유 메모리(108)의 공유 풀(200)에서의 버퍼는 임의의 인출 포트(1120-n)에 대한 데이터 패킷을 저장한다. 상기 공유 여유 카운터(400)는 버퍼가 공유 풀(200)로부터 할당되는 각각의 시간을 감소시킨다. 공유 풀 카운트(430)는 공유 풀(200)에 여유 버퍼가 존재하는지를 지시한다. 상기 공유 풀 카운트(430)는 풀 카운터 로직(302)으로 전송된다.
멀티캐스트 여유 카운터(416)는 멀티캐스트 풀(204)에서 사용가능한 버퍼의 수를 저장한다. 포트 예약 풀 카운터(4140-n)는 각각의 포트 예약 풀(2020-202n)과 공유 풀(200)로부터 각각의 인출 포트(112)로 할당되는 버퍼의 수를 저장한다. 큐 예약 임계값 레지스터(412)는 포트 예약 풀(2020-202n)로 할당하기 위해 예약된 버퍼의 수를 저장한다. 동일한 수의 버퍼가 각각의 포트 예약 풀(2020-202n)에 할당되기 위해 예약된다면, 하나의 큐 예약 임계값 레지스터(412)가 제공된다. 선택적인 실시예에서, 각각의 포트 예약 풀(2020-202n)은 할당하기 위해 예약되는 다른 수의 버퍼를 가질 수 있으며, 따라서 큐 예약 임계값 레지스터(412)는 각각의 포트 예약 풀 카운터(4140-n)를 위해 필요하다.
상기 예약 여유 카운터(428)는 각각의 인출 포트(112)를 위해 예약된 버퍼의 합으로 기설정되거나, 그 합보다 적은 수로 기설정된다. 상기 예약 여유 카운터가 그 합보다 적은 수로 기설정된다면, 더 많은 예약 메모리가 각 인출 포트마다 제공되지만, 인출 포트는 각각의 예약 풀에서 모든 버퍼를 할당할 수는 없다. 예를 들어, 각각 100개 버퍼가 예약된 4개의 예약 풀이 존재한다면, 총 예약 버퍼는 400개로 설정된다. 데이터 패킷을 수신하여 인출 포트로 전송하는데 있어서, 공유 풀에 여유 버퍼가 없고 인출 포트가 각각의 예약 포트 풀 내에 여유 버퍼를 보유하고 있지 않으면(심지어 예약 풀에 여유 버퍼가 존재한다 하더라도), 상기 패킷은 드롭된다. 각각의 예약 포트 풀이 150개까지 초과하여 예약되면, 각각의 인출 포트는 예약 풀에서 400개의 버퍼 중 150개까지 사용할 수 있다. 따라서, 많은 버퍼가 정체된 포트를 위해 유용하다. 그러나, 초과 예약함으로써, 인출 포트는 그 버퍼의 예약 풀의 할당이 보장되지 않는다. 예를 들면, 4개의 포트와 150개까지 초과 예약된 예약 포트 풀을 갖는 스위치에서, 150개의 버퍼를 사용하는 하나의 정체된 포트와, 다른 3개의 포트로 할당하기 위해 사용가능한 250개의 버퍼가 존재한다.
각각의 카운터(400, 402, 4140-n, 416 및 428)는 각각의 카운터 증대-감소 신호(422, 404, 4260-n, 410 및 436)을 가지며, 이는 풀 카운터 로직(302)에 의해 생성되어 카운터 증대-감소(306)로 전송된다(도 3). 카운터(400, 402, 4140-n, 416 및 428)는 버퍼가 각각의 풀로부터 할당되거나 풀리게 되는 각 시간을 증대 또는 감소시킨다. 예를 들면, 공유 여유 카운터(400)는 버퍼가 공유 풀(200)로부터 할당되는 각각의 시간을 감소시키고, 버퍼가 공유 풀(200)로 다시 풀리게 되는 각각의 시간을 증대시킨다. 총 여유 카운터(402)는 버퍼가 임의의 풀로부터 할당되는 각각의 시간을 감소시키고, 버퍼가 임의의 풀에서 풀리게 되는 각각의 시간을 증대시킨다.
도 5는 도 3에 도시된 풀 카운터 로직(302)에서 실시된 버퍼를 할당하도록 공유 메모리(108)에서 풀(200, 2020-202n, 204)을 선택하는 단계를 예시하는 플로우챠트이다. 도 5는 도 3 및 도 4와 관련하여 개시된다.
단계 (500)에서, 풀 카운터 로직(302)은 공유 메모리(108)에 저장되기 위하여 수신된 데이터 패킷의 통보를 대기한다. 수신된 데이터 패킷의 통보는 인입 포트 엔진(104)으로부터 전송되는 멀티캐스트 태그(126)와 순방향 벡터(114)를 포함한다. 상기 순방향 벡터(114)는 수신된 데이터 패킷이 전송되는 인출 포트(1120-n)를 지시한다. 상기 멀티캐스트 태그(126)는 데이터 패킷이 IP 멀티캐스트 데이터 패킷인지를 지시한다. 데이터 패킷이 수신되면, 처리단계는 단계 (502)로 진행된다. 그렇지 않으면, 처리단계는 단계 (500)으로 진행된다.
단계 (502)에서, 풀 카운터 로직(302)은 수신된 데이터 패킷을 저장하기 위하여 공유 메모리(108)에서 사용가능한 버퍼가 존재하는지를 결정한다. 버퍼는 총 여유(408)가 0보다 더 크면 공유 메모리(108)에서 사용가능하다. 총 여유(408)는 총 여유 카운터(402)에 저장된 여유 버퍼의 카운트이다(도 4). 버퍼가 사용가능하다면, 처리단계는 단계 (504)로 진행된다. 그렇지 않으면, 처리단계는 단계 (518)로 진행된다.
단계 (504)에서, 풀 카운터 로직(302)은 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷인지를 결정한다. 멀티캐스트 태그(126)의 상태는 데이터 패킷이 IP 멀티캐스트 데이터 패킷인지를 지시한다. 데이터 패킷이 IP 멀티캐스트 패킷이면, 데이터 패킷은 공유 메모리(108)에 일단 저장되고, 저장된 데이터 패킷의 사본은 IP 멀티캐스트 그룹의 각각의 멤버로 전송된다. 상기 데이터 패킷은 하나 이상의 인출 포트(1120-n)로 다중 시간으로 전송될 수 있다. 수신된 데이터 패킷이 IP 멀티캐스트 데이터 패킷이면, 처리단계는 단계 (520)으로 진행된다. 그렇지 않으면, 처리단계는 단계 (505)로 진행된다.
단계 (505)에서, 수신된 데이터 패킷은 비-IP 멀티캐스트 데이터 패킷이다. 따라서, 버퍼는 공유 풀(200) 또는 포트 예약 풀(2020-202n)로부터 할당되어야 한다. 상기 풀 카운터 로직(302)은 임의의 포트 예약 풀(2020-202n)에서 사용가능한 버퍼가 존재하는지를 결정한다. 버퍼는 예약 풀 카운트(432)가 0보다 더 크다면 사용가능하다. 상기 예약 풀 카운트(432)는 예약 풀(202)이 초과 예약되기 때문에 체크된다. 따라서, 심지어 수신된 데이터 패킷이 전송되는 인출 포트(1120-n)와 관련된 큐 카운트(4340-n)가 예약 임계값(418)보다 작다 할지라도, 예약 풀(202)에는 사용가능한 버퍼가 존재하지 않는다. 만약, 사용가능한 버퍼가 존재한다면, 처리단계는 단계 (506)로 진행된다. 그렇지 않으면, 처리단계는 단계 (508)로 진행된다.
단계 (506)에서, 풀 카운터 로직(302)은 각각의 포트 예약 풀(2020-202n)에서 사용가능한 버퍼가 존재하는지를 결정한다. 버퍼는 수신된 데이터 패킷이 전송되는 인출 포트(1120-n)와 관련된 큐 카운트(4340-n)가 예약 임계값(418)보다 작다면 사용가능하다. 그렇다면, 처리단계는 단계 (512)로 진행된다. 그렇지 않으면, 처리단계는 단계 (508)로 진행된다.
단계 (508)에서, 공유 메모리(108)의 각각의 포트 예약 풀(2020-202n)에서 사용가능한 버퍼는 존재하지 않는다. 풀 카운터 로직(302)은 공유 풀(200)에서 사용가능한 버퍼가 존재하는지를 결정한다. 버퍼는 공유 풀 카운트(430)가 0보다 더 크다면 사용가능하다. 그렇다면, 처리단계는 단계 (510)로 진행된다. 그렇지 않으면, 처리단계는 단계 (518)로 진행된다.
단계 (510)에서, 버퍼는 공유 풀(200)로부터 할당된다. 풀 카운터 로직(302)은 증대-감소 공유(422)을 통해 공유 여유 카운터(400)를 감소시킴으로써 공유 풀(200)에서 사용가능한 버퍼의 수를 갱신한다. 처리단계는 단계 (514)로 진행된다.
단계 (512)에서, 풀 카운터 로직(302)은 증대-감소 예약(436)을 통해 예약 여유 카운터(428)를 감소시킴으로써 포트 예약 풀(202)에서 사용가능한 버퍼의 수를 갱신한다. 처리단계는 단계 (514)로 진행된다.
단계 (514)에서, 풀 카운터 로직(302)은 증대-감소 큐(426)를 통해 포트 예약 풀 카운터(414)를 증가시킴으로써 인출 포트에 의해 사용되는 버퍼의 수를 갱신한다. 상기 각각의 포트 예약 풀 카운터(414)는 순방향 벡터(114)에서 선택된 인출 포트(112)에 따라 선택된다. 각각의 인출 포트에 대한 버퍼는 공유 풀(200) 또는 각각의 포트 예약 풀(202)로부터 할당될 수 있다. 따라서, 각각의 예약 큐 카운트(434)는 예약 임계값(418)보다 더 크게 된다. 처리단계는 단계 (516)으로 진행된다.
단계 (516)에서, 풀 카운터 로직(302)은 총 증대-감소(404)를 통해 총 여유 카운터(402)를 감소시킴으로써 공유 메모리(108)에서 여유 버퍼의 총 수를 갱신한다. 처리단계는 단계 (526)으로 진행된다.
단계 (518)에서, 공유 메모리(108)에서 사용가능한 버퍼는 존재하지 않는다. 인출 포트(112)는 각각의 포트 예약 풀(202)로부터 모든 버퍼를 사용해 왔고, 공유 풀(200)에서 모든 버퍼는 사용되고 있다. 상기 수신된 데이터 패킷은 드롭된다. 처리단계는 완료된다.
단계 (520)에서, 수신된 데이터 패킷은 IP 멀티캐스트 데이터 패킷이다. 따라서, 버퍼는 멀티캐스트 풀(204)로부터 할당되어야 한다. 풀 카운터 로직(302)은 멀티캐스트 풀(204)에서 사용가능한 버퍼가 존재하는지를 결정한다. 버퍼는 상기 멀티캐스트 풀 카운트(420)가 0보다 더 크다면, 사용가능하다. 그렇다면, 처리단계는 단계 (522)로 진행된다. 그렇지 않으면, 처리단계는 단계 (518)로 진행된다.
단계 (522)에서, 상기 풀 카운터 로직(302)은 증대-감소 멀티캐스트(410)를 통해 멀티캐스트 여유 카운터(416)를 감소시킴으로써 멀티캐스트 풀(204)에서 사용가능한 버퍼의 수를 갱신하다. 처리단계는 단계 (524)로 진행된다.
단계 (524)에서, 상기 풀 카운터 로직(302)은 버퍼가 IP 멀티캐스트 데이터 패킷을 위해 할당되는 것을 지시하기 위하여 멀티캐스트 태그(310)를 설정한다. 상기 멀티캐스트 태그(310)는 IP 멀티캐스트 데이터 패킷이 전송되는 각각의 인출 포트(112)와 관련된 인출 포트 큐(미도시)에 저장된 공유 메모리(108)에서의 할당된 버퍼로 포인터와 함께 저장된다. 처리단계는 단계 (526)으로 진행된다.
단계 (526)에서, 버퍼는 할당이 가능하다. 상기 풀 카운터 로직(302)은 버퍼가 버퍼_사용가능(308)을 통해 수신된 데이터 패킷을 저장하기 위해 가능한 것을 지시한다. 처리단계는 완료된다.
도 6은 도 3에 도시된 풀 카운터 로직(302)에서 실시된 풀로 버퍼를 돌려보내기 위한 단계를 예시하는 플로우챠트이다.
단계 (600)에서, 풀 카운터 로직(302)은 인출 포트 엔진(110)으로부터 공유 메모리(108)로 되돌리기 위하여 버퍼의 통지를 대기한다. 상기 인출 포트 엔진(110)은 패킷 저장 관리자(106)로 전송되는 선택(120)을 통해 인출 포트(112)로 저장된 데이터 패킷의 전송을 예정한다. 상기 인출 포트 엔진(110)은 각각의 인출 포트(112)를 위해 인출 포트 큐(미도시)를 포함한다. 상기 인출 포트 큐는 공유 메모리(108)에서 할당된 버퍼로 포인터를 저장한다. 인출 포트 엔진(110)이 데이터 패킷을 전송한 후에, 버퍼는 풀려질 수 있다. 버퍼가 풀려지게 되면, 처리단계는 단계 (602)로 진행된다. 그렇지 않으면, 처리단계는 단계 (602)로 진행된다.
단계 (602)에서, 풀려지도록 버퍼의 포인터와 함께 저장된 멀티캐스트 태그(126)는 버퍼가 멀티캐스트 풀(204)로부터 할당되었는지를 지시한다. 버퍼가 멀티캐스트 풀로부터 할당되었다면, 처리단계는 단계 (605)로 진행된다. 그렇지 않으면, 처리단계는 단계 (604)로 진행된다.
단계 (604)에서, 풀 카운터 로직(302)은 버퍼가 공유 풀(200) 또는 포트 예약 풀(202)로 되돌려지는지를 결정한다. 상기 풀 카운터 로직(302)은 데이터 패킷이 전송되는 인출 포트(112)와 관련된 예약 큐 카운트(434)를 검사한다. 상기 각각의 예약 큐 카운트(434)가 예약 임계값(418)보다 더 크다면, 버퍼는 공유 풀(200)로 되돌려지게 되며, 처리단계는 단계 (610)으로 진행된다. 각각의 예약 큐 카운트가 예약 임계값(418)보다 작으면, 버퍼는 각각의 포트 예약 풀(202)로 되돌려지며, 처리단계는 단계 (608)로 진행된다.
단계 (605)에서, 상기 풀 카운터 로직(302)은 IP 멀티캐스트 패킷의 사본이 IP 멀티캐스트 그룹의 모든 멤버로 전송되는지를 결정한다. IP 멀티캐스트 데이터 패킷이 IP 멀티캐스트 그룹의 모든 멤버로 전송될 때까지, 인입 포트(102)(도 1)에서 수신된 상기 IP 멀티캐스트 데이터 패킷은 공유 메모리(108)(도 1)에 저장된다. 최종 IP 멀티캐스트 데이터 패킷이 전송된 후, IP 멀티캐스트 데이터 패킷을 저장하는 공유 메모리(106)에서의 버퍼는 IP 멀티캐스트 풀(204)로 되돌려질 수 있다.
IP 멀티캐스트 데이터 패킷의 사본이 IP 멀티캐스트 그룹의 모든 멤버로 전송되었는지를 결정하기 위하여, IP 멀티캐스트 데이터 패킷이 대기되는 포트 큐(미도시)의 수는 포트 큐 카운터 레지스터(미도시)에 저장된다. 상기 카운터 레지스터는 IP 멀티캐스트 데이터 패킷의 사본이 인출 포트(110)로 전송되는 각각의 시간을 감소시킨다. 포트 큐의 수는 순방향 벡터(114)로부터 결정된다.
상기 IP 멀티캐스트 데이터 패킷의 사본이 IP 멀티캐스트 그룹의 모든 멤버로 전송된다면, 처리단계는 단계 (606)으로 진행된다. 그렇지 않으면, 처리단계는 단계 (600)으로 진행된다.
단계 (606)에서, 상기 풀 카운터 로직(302)은 증대-감소 멀티캐스트(410)를 통해 멀티캐스트 여유 카운터(416)를 증대시킴으로써 멀티캐스트 풀(204)에서 사용가능한 버퍼의 수를 갱신한다. 처리단계는 단계 (614)로 진행된다.
단계 (608)에서, 상기 풀 카운터 로직(302)은 증대-감소 예약(436)을 통해 예약 여유 카운터(428)를 증대시킴으로써 포트 예약 풀(202)에서 사용되는 버퍼의 수를 갱신한다. 처리단계는 단계 (612)로 진행된다.
단계 (610)에서, 상기 풀 카운터 로직(302)은 증대-감소 공유(422)을 통해 공유 여유 카운터(400)를 증대시킴으로써 공유 풀(200)에서 사용가능한 버퍼의 수를 갱신한다. 처리단계는 단계 (612)로 진행된다.
단계 (612)에서, 상기 풀 카운터 로직(302)은 증대-감소 큐(426)를 통해 각각의 포트 예약 풀 카운터(414)를 감소시킴으로써 인출 포트에 의해 사용된 버퍼의 수를 갱신하다. 상기 각각의 포트 예약 풀 카운터(414)는 인출 포트 엔진(110)으로부터 전송된 선택의 상태에 따라 선택되며, 처리단계는 단계 (614)로 전송된다.
단계 (614)에서, 상기 풀 카운터 로직(302)은 총 증대-감소(404)를 통해 총 여유 카운터(402)를 증대시킴으로써 공유 메모리(108)에서 사용가능한 버퍼의 전체수를 갱신한다. 처리단계는 단계 (616)으로 진행된다.
단계 (616)에서, 상기 버퍼는 버퍼에 대한 포인터를 여유 리스트로 추가함으로써 풀려지게 된다. 처리단계는 완료된다.
본 발명은 참조번호와 함께 바람직한 실시예를 들어 설명하였으나, 당업자는 첨부된 청구항에 포함되는 본 발명의 초점 내에서 다양한 변경이 가능함을 명백히 알 수 있을 것이다.

Claims (24)

  1. 인출 포트(egress port)용으로 예약되는 공유 메모리 내의 버퍼의 예약 풀(reserved pool);
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내의 버퍼들의 공유 풀; 및
    인출 포트로 전송될, 인입 포트(ingress port)로부터 수신된 데이터를 저장하기 위한 예약 풀로부터 할당할 여유 버퍼를 선택하고, 데이터가 인출 포트로 전송된 후 선택된 버퍼의 할당을 해제하는 풀 선택 로직;
    을 포함하는 것을 특징으로 하는 스위치.
  2. 제1 항에 있어서,
    상기 풀 선택 로직은 예약 풀에서 여유 버퍼가 검출되지 않으면 공유 풀에서 여유 버퍼를 선택하는 것을 특징으로 하는 스위치.
  3. 제1 항에 있어서,
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내에 버퍼들의 멀티캐스트 풀(multicast pool)을 더 포함하는 것을 특징으로 하는 스위치.
  4. 제3 항에 있어서,
    상기 풀 선택 로직은 인입 포트로부터 수신된 IP 멀티캐스트 데이터 패킷을 검출하면 멀티캐스트 풀로부터 여유 버퍼를 선택하는 것을 특징으로 하는 스위치.
  5. 제3 항에 있어서,
    공유 메모리에 여유 버퍼의 수를 저장하는 총 여유 카운터를 더 포함하며, 상기 총 여유 카운터는 공유 메모리 내의 총 버퍼수로 기설정되고, 여기서 멀티캐스트 풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수보다 더 큰 것을 특징으로 하는 스위치.
  6. 제3 항에 있어서,
    공유 메모리에 여유 버퍼의 수를 저장하는 총 여유 카운터를 더 포함하며, 상기 총 여유 카운터는 공유 메모리 내의 총 버퍼수로 기설정되고, 여기서 멀티캐스트 풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수와 동일한 것을 특징으로 하는 스위치.
  7. 제5 항에 있어서,
    상기 풀 선택 로직은 총 여유 카운터에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 것을 특징으로 하는 스위치.
  8. 제6 항에 있어서,
    상기 풀 선택 로직은 총 여유 카운터에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 것을 특징으로 하는 스위치.
  9. 인출 포트용으로 예약되는 공유 메모리 내의 버퍼들의 예약 풀;
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내의 버퍼들의 공유 풀;
    인출 포트로 전송될, 인입 포트로부터 수신된 데이터를 저장하기 위한 예약 풀로부터 할당하기 위해 여유 버퍼를 선택하는 수단; 및
    데이터가 전송된 후 선택된 버퍼의 할당을 해제하는 수단;
    을 포함하는 것을 특징으로 하는 스위치.
  10. 제9 항에 있어서,
    상기 선택 수단은 예약 풀에서 여유 버퍼가 검출되지 않으면 공유 풀에서 여유 버퍼를 선택하는 것을 특징으로 하는 스위치.
  11. 제9 항에 있어서,
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내에 버퍼들의 멀티캐스트 풀을 더 포함하는 것을 특징으로 하는 스위치.
  12. 제11 항에 있어서,
    상기 선택 수단은 인입 포트로부터 수신된 IP 멀티캐스트 데이터 패킷을 검출하면 멀티캐스트 풀로부터 여유 버퍼를 선택하는 것을 특징으로 하는 스위치.
  13. 제12 항에 있어서,
    공유 메모리의 버퍼의 총 수로 기설정되고, 공유 메모리의 여유 버퍼의 수를 카운트하는 카운팅 수단을 더 포함하며, 여기서 멀티캐스트 풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수보다 더 큰 것을 특징으로 하는 스위치.
  14. 제12 항에 있어서,
    공유 메모리의 버퍼의 총 수로 기설정되고, 공유 메모리의 여유 버퍼의 수를 카운트하는 카운팅 수단을 더 포함하며, 여기서 멀티캐스트 풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수와 동일한 것을 특징으로 하는 스위치.
  15. 제13 항에 있어서,
    상기 여유 버퍼를 선택하는 수단은 카운팅 수단에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 것을 특징으로 하는 스위치.
  16. 제14 항에 있어서,
    상기 여유 버퍼를 선택하는 수단은 카운팅 수단에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 것을 특징으로 하는 스위치.
  17. 인출 포트용으로 예약되는 공유 메모리 내의 버퍼들의 예약 풀을 제공하는 단계;
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내의 버퍼들의 공유 풀을 제공하는 단계;
    인출 포트로 전송될, 인입 포트로부터 수신된 데이터를 저장하기 위한 예약 풀로부터 할당되기 위해 여유 버퍼를 선택하는 단계; 및
    데이터가 인출 포트로 전송된 후 선택된 버퍼의 할당을 해제하는 단계;
    를 포함하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  18. 제17 항에 있어서,
    상기 선택 단계는 예약 풀에서 여유 버퍼가 검출되지 않으면 공유 풀에서 여유 버퍼를 선택하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  19. 제17 항에 있어서,
    복수개의 인출 포트에 의해 공유되는 공유 메모리 내에 버퍼의 멀티캐스트 풀을 제공하는 단계를 포함하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  20. 제19 항에 있어서,
    상기 선택 단계는 인입 포트로부터 수신된 IP 멀티캐스트 데이터 패킷을 검출하면 멀티캐스트 풀로부터 여유 버퍼를 선택하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  21. 제20 항에 있어서,
    공유 메모리의 버퍼의 총 수로 기설정되고, 공유 메모리의 여유 버퍼의 수를 카운트하는 총 여유 카운터를 제공하는 단계를 더 포함하며, 여기서 멀티캐스트 풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수보다 더 큰 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  22. 제20 항에 있어서,
    공유 메모리의 버퍼의 총 수로 기설정되고, 공유 메모리의 여유 버퍼의 수를 카운트하는 총 여유 카운터를 제공하는 단계를 더 포함하며, 여기서 멀티캐스트풀, 예약 풀 및 공유 풀에서의 버퍼의 합은 공유 메모리 내의 버퍼의 총 수와 동일한 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  23. 제21 항에 있어서,
    총 여유 카운터에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 단계를 더 포함하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
  24. 제22 항에 있어서,
    총 여유 카운터에 저장된 공유 메모리 내의 여유 버퍼의 수에 따라 공유 메모리에서의 여유 버퍼의 가용성을 결정하는 단계를 더 포함하는 것을 특징으로 하는 스위치에서의 공유 메모리 관리방법.
KR1020037001038A 2000-07-24 2001-07-20 공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치및 방법 KR100812750B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/624,276 US7007071B1 (en) 2000-07-24 2000-07-24 Method and apparatus for reducing pool starvation in a shared memory switch
US09/624,276 2000-07-24
PCT/CA2001/001049 WO2002009364A2 (en) 2000-07-24 2001-07-20 Method and apparatus for reducing pool starvation in a shared memory switch

Publications (2)

Publication Number Publication Date
KR20030019608A true KR20030019608A (ko) 2003-03-06
KR100812750B1 KR100812750B1 (ko) 2008-03-12

Family

ID=24501343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037001038A KR100812750B1 (ko) 2000-07-24 2001-07-20 공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치및 방법

Country Status (8)

Country Link
US (7) US7007071B1 (ko)
KR (1) KR100812750B1 (ko)
CN (1) CN100373885C (ko)
AU (1) AU2001276216A1 (ko)
CA (2) CA2415952C (ko)
DE (1) DE10196447B4 (ko)
GB (1) GB2380354B (ko)
WO (1) WO2002009364A2 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120117B1 (en) * 2000-08-29 2006-10-10 Broadcom Corporation Starvation free flow control in a shared memory switching device
US7007071B1 (en) * 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch
WO2003009543A2 (en) * 2001-07-17 2003-01-30 Alcatel Internetworking, Inc. In-band message synchronization for distributed shared memory packet switch
US7283470B1 (en) * 2002-01-25 2007-10-16 Juniper Networks, Inc. Systems and methods for dropping data using a drop profile
US8078763B1 (en) 2002-04-04 2011-12-13 Juniper Networks, Inc. Dequeuing and congestion control systems and methods for single stream multicast
US7209440B1 (en) * 2002-05-07 2007-04-24 Marvell International Ltd. Method and apparatus for preventing blocking in a quality of service switch
US7110415B1 (en) 2002-05-17 2006-09-19 Marvell International Ltd. Apparatus and method for dynamically limiting output queue size in a quality of service network
US6985916B2 (en) * 2002-08-29 2006-01-10 International Business Machines Corporation Method, system, and article of manufacture for returning physical volumes
KR101086592B1 (ko) * 2003-04-22 2011-11-23 에이저 시스템즈 인크 패킷 저장 방법, 버퍼 관리 방법, 손실 버퍼 검출 방법 및공유형 메모리
US7561590B1 (en) 2003-05-05 2009-07-14 Marvell International Ltd. Network switch having virtual input queues for flow control
US7716364B2 (en) * 2003-06-27 2010-05-11 Broadcom Corporation Internet protocol multicast replication
US7953086B2 (en) * 2003-06-27 2011-05-31 Broadcom Corporation Compression of datagram distribution information
US20050036445A1 (en) * 2003-08-14 2005-02-17 Lee Chien-Hsin Processing data packets
US7515584B2 (en) 2003-09-19 2009-04-07 Infineon Technologies Ag Switching data packets in an ethernet switch
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US20050157719A1 (en) * 2004-01-20 2005-07-21 Robotham Robert E. Method and apparatus for multicasting of cell or frame data
KR20050088853A (ko) * 2004-03-03 2005-09-07 엘지전자 주식회사 휴대단말기의 동적 메모리 관리장치 및 방법
US7916743B2 (en) * 2004-11-17 2011-03-29 Jinsalas Solutions, Llc System and method for improved multicast performance
US7522622B2 (en) * 2005-02-18 2009-04-21 Broadcom Corporation Dynamic color threshold in a queue
US20070147404A1 (en) * 2005-12-27 2007-06-28 Lucent Technologies, Inc. Method and apparatus for policing connections using a leaky bucket algorithm with token bucket queuing
CN1964345B (zh) * 2006-09-25 2010-06-30 杭州华三通信技术有限公司 组播流的处理方法及网络设备
US7949815B2 (en) * 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
US8050263B1 (en) 2006-10-11 2011-11-01 Marvell International Ltd. Device and process for efficient multicasting
US7711900B2 (en) * 2007-03-05 2010-05-04 International Business Machines Corporation Method, system and program product for equitable sharing of a CAM table in a network switch in an on-demand environment
US8532117B2 (en) * 2008-02-13 2013-09-10 Broadcom Corporation Flexible buffer allocation entities for traffic aggregate containment
US8619558B1 (en) * 2008-07-21 2013-12-31 Qlogic, Corporation Memory management in a network adapter
US8526326B1 (en) * 2008-08-27 2013-09-03 Juniper Networks, Inc. Lock-less access of pre-allocated memory buffers used by a network device
US8917738B2 (en) * 2009-04-27 2014-12-23 Lsi Corporation Multicasting traffic manager in a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8825859B2 (en) * 2009-12-23 2014-09-02 Citrix Systems, Inc. System and methods for mixed mode of IPv6 and IPv4 DNS of global server load balancing
US9098335B2 (en) 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
EP2517438B1 (en) 2009-12-23 2016-11-30 Citrix Systems Inc. Systems and methods for managing ports for rtsp across cores in a multi-core system
CN101873326B (zh) * 2010-06-24 2013-03-06 北京安天电子设备有限公司 一种基于有序包的迭代式病毒检测方法
DE102010033432B3 (de) * 2010-08-04 2012-04-05 Harting Electric Gmbh & Co. Kg Verfahren zur Übermittlung von Multicast-Datenpaketen durch einen Switch
CN102185725A (zh) * 2011-05-31 2011-09-14 北京星网锐捷网络技术有限公司 一种缓存的管理方法、装置和网络交换设备
US8898385B2 (en) 2011-09-09 2014-11-25 Lsi Corporation Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
US8630286B2 (en) * 2011-09-30 2014-01-14 Broadcom Corporation System and method for improving multicast performance in banked shared memory architectures
CN102497431B (zh) * 2011-12-13 2014-10-22 曙光信息产业(北京)有限公司 一种tcp连接缓存应用数据的内存申请方法和系统
US8665725B2 (en) * 2011-12-20 2014-03-04 Broadcom Corporation System and method for hierarchical adaptive dynamic egress port and queue buffer management
US8891540B2 (en) 2012-05-14 2014-11-18 Juniper Networks, Inc. Inline network address translation within a mobile gateway router
US8995455B1 (en) * 2012-11-15 2015-03-31 Qlogic, Corporation Memory devices for network devices and associated methods
US9100313B1 (en) * 2012-12-10 2015-08-04 Cisco Technology, Inc. Shared egress buffer in a multi-stage switch
CN104124962B (zh) * 2013-04-25 2017-07-07 联发科技股份有限公司 多阶复制计数器存储装置及用来管理多播封包处理的方法
US9521007B2 (en) 2013-04-25 2016-12-13 Mediatek Inc. Multi-level replication counter storage device for multicast packet processing and related method for managing multicast packet processing
US10057194B1 (en) * 2014-01-07 2018-08-21 Marvell Israel (M.I.S.L) Ltd. Methods and apparatus for memory resource management in a network device
US10050896B2 (en) * 2014-11-14 2018-08-14 Cavium, Inc. Management of an over-subscribed shared buffer
US9952776B1 (en) * 2015-07-24 2018-04-24 EMC IP Holding Company LLC Automatic non-disruptive congestion control of a fabric in a data storage system
US9965211B2 (en) 2016-09-08 2018-05-08 Cisco Technology, Inc. Dynamic packet buffers with consolidation of low utilized memory banks
CN109218387A (zh) * 2018-07-02 2019-01-15 佛山科学技术学院 一种共享存储池的存储方法
US11171884B2 (en) 2019-03-13 2021-11-09 Mellanox Technologies Tlv Ltd. Efficient memory utilization and egress queue fairness
US11789858B2 (en) * 2020-08-11 2023-10-17 Samsung Electronics Co., Ltd. Method and system for performing read/write operation within a computing system hosting non-volatile memory
GB2612619B (en) * 2021-11-05 2024-02-21 Graphcore Ltd Fair arbitration between multiple sources targeting a destination

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278865B2 (ja) * 1991-06-28 2002-04-30 日本電気株式会社 トラヒック制御方法
US6151301A (en) * 1995-05-11 2000-11-21 Pmc-Sierra, Inc. ATM architecture and switching element
US6523060B1 (en) * 1995-04-07 2003-02-18 Cisco Technology, Inc. Method and apparatus for the management of queue pointers by multiple processors in a digital communications network
JP2001519973A (ja) 1995-07-19 2001-10-23 フジツウ ネットワーク コミュニケーションズ,インコーポレイテッド 共用バッファへの優先度付きアクセス
US5991295A (en) * 1995-10-10 1999-11-23 Madge Networks Limited Digital switch
US5838994A (en) * 1996-01-11 1998-11-17 Cisco Technology, Inc. Method and apparatus for the dynamic allocation of buffers in a digital communications network
US5724358A (en) 1996-02-23 1998-03-03 Zeitnet, Inc. High speed packet-switched digital switch and method
US6219728B1 (en) * 1996-04-22 2001-04-17 Nortel Networks Limited Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
US6049546A (en) * 1996-10-15 2000-04-11 At&T Corporation System and method for performing switching in multipoint-to-multipoint multicasting
US6046982A (en) * 1997-03-18 2000-04-04 Cabletron Systems, Inc. Method and apparatus for reducing data loss in data transfer devices
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6487202B1 (en) * 1997-06-30 2002-11-26 Cisco Technology, Inc. Method and apparatus for maximizing memory throughput
US6216167B1 (en) * 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
US7145868B2 (en) * 1997-11-28 2006-12-05 Alcatel Canada Inc. Congestion management in a multi-port shared memory switch
US6456590B1 (en) * 1998-02-13 2002-09-24 Texas Instruments Incorporated Static and dynamic flow control using virtual input queueing for shared memory ethernet switches
US6320861B1 (en) * 1998-05-15 2001-11-20 Marconi Communications, Inc. Hybrid scheme for queuing in a shared memory ATM switch buffer
US6920146B1 (en) * 1998-10-05 2005-07-19 Packet Engines Incorporated Switching device with multistage queuing scheme
US6147969A (en) * 1998-10-14 2000-11-14 Lucent Technologies Inc. Flow control method for ABR service in an asynchronous transfer mode network
US6625159B1 (en) * 1998-11-30 2003-09-23 Hewlett-Packard Development Company, L.P. Nonblocking and fair queuing switching method and shared memory packet switch
TW444478B (en) * 1998-12-10 2001-07-01 Ind Tech Res Inst Ethernet switch IC with shared memory structure and its network
US6535963B1 (en) * 1999-06-30 2003-03-18 Cisco Technology, Inc. Memory apparatus and method for multicast devices
US6711170B1 (en) 1999-08-31 2004-03-23 Mosaid Technologies, Inc. Method and apparatus for an interleaved non-blocking packet buffer
US6754211B1 (en) 1999-12-01 2004-06-22 Mosaid Technologies, Inc. Method and apparatus for wire speed IP multicast forwarding
US6501757B1 (en) * 2000-02-29 2002-12-31 Centre For Development Of Telematics ATM switch
US6657962B1 (en) * 2000-04-10 2003-12-02 International Business Machines Corporation Method and system for managing congestion in a network
US7236489B1 (en) 2000-04-27 2007-06-26 Mosaid Technologies, Inc. Port packet queuing
US7007071B1 (en) * 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch

Also Published As

Publication number Publication date
GB2380354A (en) 2003-04-02
US8630304B2 (en) 2014-01-14
WO2002009364A3 (en) 2002-09-06
GB2380354B (en) 2004-01-14
CA2415952A1 (en) 2002-01-31
US20080250116A1 (en) 2008-10-09
US9769080B2 (en) 2017-09-19
US20150365333A1 (en) 2015-12-17
CA2700321C (en) 2014-12-09
US7996485B2 (en) 2011-08-09
WO2002009364A2 (en) 2002-01-31
DE10196447T1 (de) 2003-09-11
AU2001276216A1 (en) 2002-02-05
US7007071B1 (en) 2006-02-28
CA2700321A1 (en) 2002-01-31
US20060259572A1 (en) 2006-11-16
GB0301250D0 (en) 2003-02-19
CA2415952C (en) 2011-01-04
DE10196447B4 (de) 2020-04-23
CN1444812A (zh) 2003-09-24
US9083659B2 (en) 2015-07-14
US20110286455A1 (en) 2011-11-24
US7743108B2 (en) 2010-06-22
US20140092743A1 (en) 2014-04-03
US7403976B2 (en) 2008-07-22
KR100812750B1 (ko) 2008-03-12
US20100250699A1 (en) 2010-09-30
CN100373885C (zh) 2008-03-05

Similar Documents

Publication Publication Date Title
KR100812750B1 (ko) 공유 메모리 스위치에서 풀 스타베이션을 감소시키는 장치및 방법
US6785236B1 (en) Packet transmission scheduling with threshold based backpressure mechanism
US5790522A (en) Method and system for performing traffic congestion control in a data communication network
US6658016B1 (en) Packet switching fabric having a segmented ring with token based resource control protocol and output queuing control
US6654343B1 (en) Method and system for switch fabric flow control
US6661802B1 (en) Congestion management
EP1774714B1 (en) Hierarchal scheduler with multiple scheduling lanes
US6292492B1 (en) Efficient method and apparatus for allocating memory space used for buffering cells received on several connections in an asynchronous transfer mode (ATM) switch
US5790545A (en) Efficient output-request packet switch and method
US8189597B2 (en) Pipeline scheduler with fairness and minimum bandwidth guarantee
US7230923B2 (en) Time based packet scheduling and sorting system
US7457297B2 (en) Methods and apparatus for differentiated services over a packet-based network
US6625159B1 (en) Nonblocking and fair queuing switching method and shared memory packet switch
US6661803B1 (en) Network switch including bandwidth controller
JPH0715444A (ja) 非同期転送モード通信装置
US20050068798A1 (en) Committed access rate (CAR) system architecture
EP1393498B1 (en) Distributed shared memory packet switch
US7269180B2 (en) System and method for prioritizing and queuing traffic
US20030072260A1 (en) Multi-dimensional buffer management hierarchy
US20060098673A1 (en) Input queue packet switch architecture and queue service discipline
JPH11510323A (ja) Atm交換機の多重レベル制御用リンクドリスト構造
JPH11510009A (ja) 割付型並びに動的交換機フロー制御
JP2001223742A (ja) 輻輳の場合におけるセルバッファ保護の方法および装置

Legal Events

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

Payment date: 20130304

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 13