KR101611119B1 - 3진 내용 주소화 기억장치(tcam) 내의 클러스터로의 레코드의 동적 할당 - Google Patents

3진 내용 주소화 기억장치(tcam) 내의 클러스터로의 레코드의 동적 할당 Download PDF

Info

Publication number
KR101611119B1
KR101611119B1 KR1020147031793A KR20147031793A KR101611119B1 KR 101611119 B1 KR101611119 B1 KR 101611119B1 KR 1020147031793 A KR1020147031793 A KR 1020147031793A KR 20147031793 A KR20147031793 A KR 20147031793A KR 101611119 B1 KR101611119 B1 KR 101611119B1
Authority
KR
South Korea
Prior art keywords
cluster
records
type
empty
threshold
Prior art date
Application number
KR1020147031793A
Other languages
English (en)
Other versions
KR20140144303A (ko
Inventor
토비 제이 코크탄
Original Assignee
알까뗄 루슨트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알까뗄 루슨트 filed Critical 알까뗄 루슨트
Publication of KR20140144303A publication Critical patent/KR20140144303A/ko
Application granted granted Critical
Publication of KR101611119B1 publication Critical patent/KR101611119B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

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

Abstract

본 발명의 실시예는 라우팅 시스템에서의 최장 프리픽스 일치를 위한 TCAM에 관한 것이다. TCAM은 복수의 레코드를 포함하고, 그 일부는 하나 이상의 어드레스 클러스터 내로 구성되고, 각각의 이러한 클러스터는 각각의 IP 어드레스 프리픽스 길이에 대응하고, 다른 부분은 임의의 IP 어드레스 프리픽스 길이에 대응하지 않는 여유 클러스터 내로 구성된다.

Description

3진 내용 주소화 기억장치(TCAM) 내의 클러스터로의 레코드의 동적 할당{DYNAMIC ALLOCATION OF RECORDS TO CLUSTERS IN A TERNARY CONTENT ADDRESSABLE MEMORY}
본 발명은 3진 내용 주소화 기억장치(ternary content addressable memory: TCAM) 내에 레코드를 할당하는 것에 관한 것으로서, 특히 클러스터(cluster) 내에 이러한 레코드를 동적으로 할당하는 것에 관한 것이다.
TCAM 하드웨어 디바이스는 고속 라우팅 룩업(routing lookup) 및 패킷 분류를 위해 현재의 고성능 통신 시스템에 통상적으로 이용된다. TCAM 탐색(search)은 병렬의 포워딩 테이블(forwarding table) 또는 분류기 데이터베이스 내의 모든 엔트리에 대한 수신 패킷의 헤더를 비교할 것이다. 룩업 결과는 TCAM 내의 레코드 위치 및 레코드의 수에 무관하게 고정된 지연시간(latency)을 갖고 리턴된다.
IPv4/v6 라우팅 룩업에서, 엔트리는 최장 프리픽스 일치(longest prefix matching: LPM)를 보장하기 위해 포워딩 테이블 내의 어드레스 프리픽스 길이에 기초하여 분류된다. 라우팅 룩업 엔트리의 추가 및 삭제 하에서 TCAM 내에 엔트리를 분류 유지하는 것은 시간 소비적인 작업이고, 최악의 경우에 N개의 메모리 시프트(삭제 및 재기록) 동작을 취할 수도 있는데, 여기서 N은 예를 들어 IPv4에 대해 32 및 IPv6에 대해 128과 같은 포워딩 테이블 내의 프리픽스의 수이다. 이와 같이 TCAM 엔트리를 분류 유지하는 것은 통신 트래픽의 데이터 경로 포워딩을 지연시킬 수 있고, 시스템 CPU 리소스에 지속적인 부하를 유발할 수 있는데, 이는 시스템 성능 열화와 같은 문제점을 유발하는 잠재성을 갖는다. 성능 열화의 위험은 벌크 라우팅 업데이트 중에 특히 높다.
이하에 블록이라 또한 칭하는 고정 크기 클러스터에 TCAM 내의 레코드를 할당하는 것이 공지되어 있다. 그러나, 적합한 초기 디폴트 블록 크기를 선택하는 것은 어려울 수도 있다. 예를 들어, 초기 블록 크기가 특정 애플리케이션에 대해 너무 작으면, 블록이 충만 상태가 된 후에 블록 내에 모든 새로운 엔트리의 추가는 이동 동작이 각각의 새로운 엔트리를 삽입하는데 필요할 것이기 때문에, CPU 자원에 과도한 부담이 될 수도 있다. 더욱이, 다수의 상이한 시장 및 애플리케이션을 위해 설계된 시스템은 상이한 IP 루트 분배 요구를 가질 수도 있는데, 이는 라우트 프리픽스 길이당 적합한 "만능(one size fits all)" 디폴트 블록 크기가 결정되는 것이 어렵다는 것을 의미할 수 있다. 더욱이, 벌크 라우팅 업데이트가 존재하는 기간 동안, 예를 들어 다수의 라우팅 테이블이 네트워크 내의 주요 변경에 기인하여 추가/삭제되고, 결과적인 여분의 프로세싱은, 라우트 테이블이 커지게 되고 각각의 IP 어드레스 프리픽스 길이와 연계된 다수의 블록이 용량에 접근하여 도달하면 CPU 리소스 및 시간 소비적일 수 있다.
따라서, TCAM 내의 블록 내에 레코드를 동적으로 할당하기 위한 효율적인 접근법이 요구된다.
본 발명의 양태에 따르면, 최장 프리픽스 일치를 위한 TCAM이 제공된다. TCAM은 복수의 레코드를 포함하고, 그 일부는 하나 이상의 어드레스 클러스터 내로 구성되고, 각각의 이러한 클러스터는 각각의 IP 어드레스 프리픽스 길이에 대응하고, 다른 부분은 임의의 IP 어드레스 프리픽스 길이에 대응하지 않는 여유 클러스터 내로 구성된다.
본 발명의 다른 양태에 따르면, TCAM 내의 클러스터에 레코드를 동적으로 할당하는 방법이 제공된다. 방법은 각각의 수의 레코드를 제 1 유형의 복수의 클러스터의 각각에 할당하는 단계와, 제 2 유형의 클러스터에 복수의 비어 있는 레코드를 할당하는 단계와, 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각 모니터링하는 단계와, 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각의 제 1 임계치와 비교하는 단계와, 해당 클러스터의 비어 있지 않은 각각의 레코드 수가 해당 클러스터의 각각의 제 1 임계치를 초과하면 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 증가시키는 단계를 포함한다.
본 발명의 또 다른 양태에 따르면, TCAM 내의 클러스터에 레코드를 동적으로 할당하도록 구성된 장치가 제공된다. 장치는 TCAM과, 메모리와, TCAM 및 메모리와 통신하는 프로세서를 포함한다. 메모리는 명령어를 포함하는 소프트웨어 프로그램으로 구성되고, 명령어는 프로세서에 의해 실행될 때, 장치로 하여금 각각의 수의 레코드를 제 1 유형의 복수의 클러스터의 각각에 할당하고, 제 2 유형의 클러스터에 복수의 비어 있는 레코드의 수를 할당하며, 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 모니터링하고, 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 레코드 수를 각각의 제 1 임계치와 비교하며, 해당 클러스터의 비어 있지 않은 각각의 레코드 수가 해당 클러스터의 각각의 제 1 임계치를 초과하면 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 증가시키도록 동작 가능하게 한다.
부가적으로 또는 대안적으로, 본 발명의 몇몇 실시예에서, 각각의 수의 레코드를 제 1 유형의 복수의 클러스터의 각각에 할당하는 단계는 각각의 인터넷 어드레스 프리픽스 길이에 각각의 클러스터를 연계하는 단계를 포함한다.
부가적으로 또는 대안적으로, 본 발명의 몇몇 실시예에서, 제 2 유형의 클러스터에 비어 있는 레코드의 수를 할당하는 단계는 할당된 레코드가 비어 있는 상태로 유지되는 여유 공간 클러스터에 제 2 유형의 클러스터를 연계하는 단계를 포함한다.
부가적으로 또는 대안적으로, 본 발명의 몇몇 실시예에서, 비교하는 단계는 제 1 유형의 클러스터에 할당된 레코드의 수의 각각의 제 1 퍼센트인 각각의 제 1 임계치와 비어 있지 않은 각각의 레코드 수를 비교하는 단계를 포함한다. 더욱이, 몇몇 실시예에서, 비교하는 단계는 제 1 유형의 클러스터와 연계된 각각의 인터넷 어드레스 프리픽스 길이에 따라 각각의 제 1 퍼센트를 결정하는 단계를 더 포함한다.
부가적으로 또는 대안적으로, 본 발명의 몇몇 실시예에서, 증가시키는 단계는 제 2 유형의 클러스터에 할당된 레코드의 수를 제 1 레코드의 수만큼 감소시키는 단계 및 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 제 1 레코드의 수만큼 증분하는 단계를 포함한다.
부가적으로 또는 대안적으로, 본 발명의 몇몇 실시예는 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 모니터링하는 단계와, 비어 있는 레코드의 수를 제 2 임계치와 비교하는 단계와, 비어 있는 레코드의 수가 제 2 임계치보다 작으면 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 단계를 더 포함한다. 더욱이, 본 발명의 몇몇 실시예에서, 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 단계는 제 1 유형의 하나 이상의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각의 제 3 임계치와 비교하는 단계와, 해당 클러스터의 비어 있지 않은 각각의 레코드 수가 해당 클러스터의 각각의 제 3 임계치보다 작으면 제 1 유형의 특정 클러스터에 할당된 각각의 레코드의 수를 제 2 레코드의 수만큼 감소시키는 단계와, 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 제 2 레코드의 수만큼 증가시키는 단계를 포함한다. 더욱이, 본 발명의 몇몇 실시예는 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수가 제 2 임계치보다 크거나 같을 때까지, 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 모니터링하는 단계와, 비어 있는 레코드의 수를 제 2 임계치와 비교하는 단계와, 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 단계를 반복하는 단계를 더 포함한다.
유리하게는, 본 발명의 몇몇 실시예는 고용량 스케일링된 IP 라우팅 네트워킹 제품을 위한 향상된 성능을 제공한다.
유리하게는, 본 발명의 몇몇 실시예는 라우트 프리픽스 길이당 적합한 "만능" 디폴트 블록 크기가 이들이 특정 요구에 기초하여 요구시에 TCAM 클러스터의 성장/축소를 가능하게 하는 것을 결정하는 것이 어려운 문제점을 완화한다. 몇몇 경우에, 새로운 레코드는 새로운 라우트가 학습될 때 임의의 이동 동작 없이 TCAM 내로 삽입되는 것이 가능할 수도 있다.
유리하게는, 본 발명의 몇몇 실시예는 새로운 라우팅 엔트리가 실시예를 이용하는 라우팅 시스템에 의해 학습될 때에 TCAM 엔트리를 업데이트되고 분류된 상태로 유지하도록 시도하는 것에 대조적으로, 백그라운드 프로세스에서 전술된 방법 단계들의 일부 또는 모두를 실행함으로써 아이들 중앙 처리 유닛(central processing unit: CPU)을 이용할 수도 있다.
유리하게는, 본 발명의 몇몇 실시예는 라우팅 시스템에 이용될 때 전체 평균 라우트 추가 시간을 감소시킬 수 있어, 이에 의해 예를 들어 주요 네트워크 변경에 기인하는 벌크 라우트 업데이트 중에 임계적으로 요구될 수 있는 프로세싱 리소스를 자유롭게 한다.
본 발명이 상기 및 다른 목적, 특징 및 장점은 첨부 도면에 도시된 바와 같이, 바람직한 실시예의 이하의 더 구체적인 설명으로부터 명백해질 것이다.
도 1은 본 발명의 제 1 실시예에 따른 TCAM 내의 클러스터에 레코드를 동적으로 할당하는 방법을 도시한다.
도 2는 도 1에 도시된 방법의 구현으로부터 발생하는 TCAM 내의 클러스터로의 레코드의 할당을 도시한다.
도 3은 본 발명의 제 1 실시예에 따른 도 2의 TCAM 상에 수행되는 동적 클러스터 성장 동작을 도시한다.
도 4는 본 발명의 제 1 실시예에 따른 도 2의 TCAM 상에 수행되는 동적 클러스터 축소 동작을 도시한다.
도 5는 본 발명의 제 2 실시예에 따른 도 1에 도시된 방법을 수행하기 위한 장치를 도시한다.
도면에서, 유사한 특징들은 유사한 도면 부호로 나타낸다.
본 발명의 실시예는 TCAM IPv5/v6 LPM 동적 클러스터 리사이징 소프트웨어 프로세스에 사용될 수 있다. 이와 같이, 프리픽스 길이에 기초하는 IPv5/v6 레코드 클러스터는 TCAM 메모리 공간의 부분을 가로질러 파티션으로서 생성된다. 클러스터들 자체의 디폴트 크기는 몇몇 샘플 라우터 배포(deployment)의 포워딩 정보 데이터베이스 내의 통상의 라우트 분산(distribution)에 기초하여 규정된다. 이 디폴트 크기 정의는 클러스터가 충만 상태가 되는, 즉 새로운 레코드를 추가/삽입하기 위한 공간이 남아 있지 않은 가능성을 감소시키지만 제거하지는 않는다. 클러스터는 클러스터의 종단에서 비어 있는 레코드의 형태의 여유 공간(free space)을 갖고 유지된다. 프리픽스 길이 클러스터 내의 레코드에 대한 순서 종속성이 존재하지 않기 때문에, 클러스터 내에 여유 공간이 존재하는 한, 새로운 레코드 엔트리는 임의의 이동 동작 없이 간단하고 순간적으로 프로그램될 수 있어, 이에 의해 레코드를 위한 고속 삽입 시간을 제공한다.
동적 클러스터 리사이징 프로세스는, 그 CPU 아이들 기간 동안 통신 네트워크 내에서 배포된 라우팅 시스템의 정상 상태 동작 중에 상당한 수가 존재할 수 있는 백그라운드 소프트웨어 프로세스로서 실행될 수 있다. 아이들 기간 중에 이러한 이용 가능한 CPU 시간의 일부를 리캡처링하는 것 및 TCAM LPM 분류 및 동적 리사이징 동작을 위해 이를 사용하는 것은 CPU 리소스의 효율적인 사용을 행한다. 이용 가능한 CPU 아이들 시간의 예외는 통상적으로 시스템 부트업(boot-up) 및 초기 구성 중에, 뿐만 아니라 벌크 라우트 업데이트와 같은 대규모 네트워크 이벤트 중에 발생하여 통신 서비스의 높은-이용 가능성을 위해 트래픽 흐름을 리라우팅한다.
TCAM 내의 배포 및 이들의 연계된 라우트 분산은 통상적으로 상이하기 때문에, 어느 클러스터가 충만 상태가 될 수도 있고 여분의 공간을 필요로 하는지를 예측하는 것은 어렵다. TCAM 어드레스 공간의 종단에 본 명세서에서 "여유 공간" 클러스터(또한 여유 클러스터 및 비어 있는 클러스터)라 칭하는 것을 확보함으로써, 그 디폴트 클러스터 크기 한계에 접근하는 임의의 클러스터를 성장시킬 여지가 존재한다. 여유 공간 클러스터의 크기는 예를 들어 총 TCAM 용량의 10%일 수 있다. 역으로, 너무 대형 크기가 되고 따라서 TCAM 공간을 비효율적으로 사용할 수도 있는 클러스터는 비어 있는 클러스터 공간(즉, 비어 있는 또는 미사용 레코드)의 부분을 여유 공간 클러스터로 이동함으로써 축소될 수 있어, 이에 의해 필요에 따라 다른 클러스터를 성장하는데 사용을 위해 그 공간을 재이용한다.
동적 클러스터 리사이징 프로세스의 부분으로서, 백그라운드 소프트웨어 프로세스는 클러스터 접근 용량을 검출하고 필요한 경우에 크기를 동적으로 증가시키고 대형의 충분히 이용되지 않은 클러스터에 대한 크기를 감소시키는 프로세스를 호출하도록 주기적으로 실행될 수 있다. 프로세스는 백그라운드에서 충만 상태가 되는(예를 들어, 이들의 할당된 레코드 크기의 75% 초과) 클러스터를 검출하고 이러한 클러스터의 크기를 동적으로 증가시키는 프로세스를 개시하여, 예를 들어 새로운 라우트 업데이트가 행해져야 할 때 이들이 새로운 엔트리를 추가하기 위한 충분한 여유 공간을 갖는 것을 보장한다.
라우트 테이블이 완전히 파퓰레이팅될(populated) 때를 제외하고는, 새로운 라우트를 학습/컴퓨팅하는 프로세스는 종종 페이스 조절되어(paced) 라우트가 다운로드되기 전에 고속 삽입을 위해 TCAM을 재편성하기 위한 기회를 소프트웨어에 제공한다. 일괄의 라우팅 업데이트가 모두 동시에 도달하여 이에 의해 아이들 CPU 사이클이 이용 가능하기 전에 클러스터를 채우면, 소프트웨어 프로세스는 이 클러스터로의 미래의 추가가 엔트리 이동을 필요로 하지 않을 수 있도록 이후의 언젠가에 클러스터에 공간을 추가함으로써 충만 클러스터 상황을 개선할 것이다. 프로세스는 여유 공간 클러스터로부터 여지를 청구하고, 크기가 증가할 필요가 있는 클러스터에 도달할 때까지 모든 레코드를 시프트 다운하기 시작한다. 최악의 경우 시나리오는 /32 또는 /128(IPv4 또는 IPv6 각각) 클러스터 성장일 것인데, 이는 최대 수의 이동 동작을 야기할 것이다. 그러나, 벌크 업데이트 기간의 외에, 통상적으로 다수의 프리 CPU 사이클이 이용 가능하다. 필요하다면, TCAM을 재편성하기 위한 작업은 작은 동작으로 분해될 수 있어 그렇지 않으면 아이들 CPU 프로세싱 사이클일 수 있는 것이 사용을 행한다.
동적 클러스터 리사이징 프로세스의 다른 기능은, 그 크기가 총 TCAM 크기의 특정 사전 선택된 퍼센트(예를 들어, 10%)에서 남아 있는 것을 보장하기 위해 여유 공간 클러스터 내의 비어 있는 레코드(여유 공간)의 수를 모니터링하는 것이다. 따라서, 클러스터 성장 동작이 발생되자마자 하나 이상의 축소 동작이 호출되어 미사용 클러스터 공간을 재이용하고 필요에 따라 다른 클러스터를 성장시키는데 사용을 위해 여유 공간 클러스터로 이를 다시 유도한다. 이러한 클러스터 수축 동작을 위한 예시적인 기준은: 클러스터의 미사용 공간 > 512 레코드, 클러스터 < 25% 이용된 것, 또는 클러스터는 다른 클러스터(여유 공간 클러스터는 제외함)에 비교하여 최소 수의 이전의 수축 동작에 수반되어 있는 것을 포함한다. 후자의 기준은 너무 크게 치수 설정된 모든 클러스터의 축소를 제공하는 것을 목표로 한다.
몇몇 TCAM 용례에서, 클러스터 성장/수축 동작은 특히 특정 배포의 라우트 분산이 시간 경과에 따라 극적으로 변경될 가능성이 없을 때 단지 몇회만 발생할 수도 있다. 동적 클러스터 리사이징 프로세스는 고객의 라우트 테이블 분산에 TCAM 레코드 할당을 조정하기 위해 백그라운드에서 동작하기 때문에, 시간 소비적인 TCAM 엔트리 이동 동작이 중요한 네트워크 업데이트의 기간 중에 발생하는 가능성이 감소된다. 더욱이, 동적 클러스터 리사이징 프로세스는 데이터 경로 내로의 최고 가능한(즉, 레코드 이동이 없음) 업데이트의 속도를 보장함으로써 TCAM 성능을 향상시키고 라우터의 동작 전체에 걸쳐 TCAM 디바이스 내로의 전체 평균 라우트 레코드 삽입 시간을 감소시키는 것을 도울 수 있다.
동적 클러스터 리사이징 프로세스의 구현예는 2개의 개별 함수를 포함할 수도 있는데, 이들은 TCAM 내의 클러스터의 크기를 성장하거나 증가시키는데 사용되는 제 1 함수와, TCAM 내의 클러스터의 크기를 수축하거나 감소시키는데 사용되는 제 2 함수이다. 제 1 함수는 "GrowIPClusterUpIntoAdjacentFreeSpace"라 본 명세서에서 칭하고, 반면에 제 2 함수는 "GrowIPClusterDownlntoAdjacenfFreeSpace"라 본 명세서에서 칭한다.
이하의 예는 함수들이 어떻게 사용되는지를 예시한다. 프리픽스 길이 = N을 갖는 클러스터에 대한 양 X 레코드의 동적 클러스터 성장 동작이 동적 클러스터 리사이징 프로세스에 의해 요구되는 것으로 가정한다. 프로세스는 이하의 단계를 실행할 것이다.
1) 여유 공간 클러스터 TCAM 어드레스 공간의 상위(즉, 최상위 어드레스)에서 여유 공간 클러스터 /0 프리픽스 클러스터 X 레코드를 다운 성장
2) 다음에, TCAM 어드레스 공간 내에서 클러스터 1, 2 ...N에 동시에 더 상위의 클러스터로(프리픽스 길이가 더 상위인 것) 연속적으로 이동하고 GrowIPClusterDownIntoAdjacentFreeSpace를 사용하여 클러스터 X 레코드를 다운 성장하고, 여기서 클러스터를 다운 성장하는 것은 소정의 클러스터의 상위에 엔트리를 롤링 다운하여 이에 의해 다음의 더 상위의 클러스터(프리픽스 길이가 더 상위인 것) 내의 여유 공간을 생성하는 것을 수반한다. 이동된 엔트리의 수를 감소시키기 위해, 엔트리는 시프트되지 않고, 이는 심지어 하나의 레코드만큼 시프트하기 위해 하나의 위치만큼 모든 엔트리를 이동하는 것을 필요로 하지만, 대신에 원하는 여유 공간의 양의 생성을 실행하기 위해 필요에 따라 다수의 엔트리가 소정의 클러스터의 상위(최상위 어드레스)에서 이들의 위치로부터 클러스터의 하위(최하위 어드레스)의 엔트리에 인접한 위치로 직접 이동된다는 것이 주목되어야 한다. 어드레스 프리픽스가 클러스터 내에 분류되지 않기 때문에, 이 방식으로 엔트리를 롤링하는 것은 단지 엔트리를 시프트하는 대신에 필요에 따라 엔트리를 이동시키도록 이용될 수 있고, 이는 덜 효율적일 것이다.
최종 결과는 여유 공간의 X 레코드가 이제 TCAM 클러스터를 가로질러 LPM 편성을 유지하면서 클러스터 N으로 전달되는 것이다.
이하의 예는 함수들이 어떻게 사용되는지를 더 예시한다. 프리픽스 길이 = N을 갖는 클러스터에 대한 양 X 레코드의 동적 클러스터 축소 동작이 동적 클러스터 리사이징 프로세스에 의해 요구되는 것으로 가정한다. 프로세스는 이하의 단계를 실행할 것이다.
1) 클러스터 = N에서 시작하고 GrowIPClusterUpIntoAdjacentFreeSpace를 사용하여 X 레코드만큼 클러스터를 업 성장
2) 다음에, TCAM 어드레스 공간 내에서 동시에 하나의 클러스터를 연속적으로 하향으로 이동하고 /0 클러스터가 도달될 때까지 GrowIPClusterUpIntoAdjacentFreeSpace를 사용하여 X 레코드만큼 클러스터를 업 성장시키고, 여기서 클러스터를 업 성장시키는 것은 클러스터의 하위(즉, 최하위 어드레스)로부터 클러스터의 상위(즉, 최상위 어드레스)로 엔트리를 롤링하는 것을 수반하고, 이는 현재 클러스터 아래의 클러스터 내의 공간을 비운다.
3) 마지막으로, 여유 공간 클러스터를 /0 클러스터 내로 업 성장시킴으로써 여유 공간 클러스터 내로 공간 X의 블록을 재차 전달함.
최종 결과는, 필요에 따라 다른 클러스터의 크기를 증가시키는 데 미래에 사용될 수 있는, 클러스터 N으로부터의 여유 공간의 X 레코드가 여유 공간 클러스터로 다시 전달되었다는 것이다.
도 1은 본 발명의 제 1 실시예에 따른 TCAM 내의 클러스터에 레코드를 동적으로 할당하는 방법(100)을 도시한다. 일반적으로, TCAM은 복수의 어드레스 클러스터로 분할되고, 각각의 이러한 클러스터는 IP 어드레스 프리픽스 길이 및 여유 클러스터에 대응한다. 방법은 각각의 수의 레코드를 TCAM 내의 어드레스 클러스터(1 내지 N)의 각각에 할당함으로써(102) 시작한다. 방법(100)의 실행은 여유 클러스터에 다수의 레코드를 할당함으로써(104) 계속되고, 여기서 여유 클러스터는 어드레스 클러스터들 중 하나는 아니다. 이들 첫번째 2개의 할당 단계(102, 104)는 전술된 분할을 실행하기 위해 임의의 순서로 행해질 수 있다. 통상적으로, 어드레스 클러스터의 각각에 할당된 레코드 수는 TCAM이 사용되는 용례에 따라 변경될 것이다. 여유 클러스터에 할당된 레코드 수는 통상적으로 TCAM 상의 레코드의 용량의 10%일 것이지만, 이 양은 TCAM의 의도된 사용에 따라 또한 변경될 수 있다. TCAM의 예시적인 구성이 도 2를 참조하여 이하에 더 상세히 설명될 것이다.
방법(100)은 TCAM 내의 클러스터로의 레코드의 동적 할당, 실제로 재할당 및 조정을 성취하기 위해 반복적으로 실행될 것인 일련의 단계를 시작하기 위해 어드레스 클러스터(예를 들어, X, X는 1 내 N의 범위임)를 선택함으로써(106) 계속된다. 방법은 선택된 어드레스 클러스터 X 내의 비어 있지 않은 레코드 수를 결정함으로써(108) 계속된다. 비어 있지 않은 레코드는 IP 어드레스 프리픽스와 같은 그 내에 엔트리를 갖는 것이다. 방법(100)은 선택된 어드레스 클러스터 X 내의 비어 있지 않은 레코드의 수가 선택된 어드레스 클러스터 X의 상한 임계치를 초과하는지를 판정하는 단계(110)로 진행하고, 만일 그러하면 선택된 어드레스 클러스터 X에 할당된 레코드 수를 증가시킨다(110). 상한 임계치의 예는 선택된 어드레스 클러스터 X에 할당된 레코드의 75%이다. 방법(100)은 여유 클러스터 내의 비어 있는 레코드의 수를 결정함으로써(112) 계속된다. 비어 있는 레코드는 그 내에 어떠한 엔트리도 갖지 않는 레코드이다. 방법(100)은 여유 클러스터 내의 비어 있는 레코의 수가 여유 임계치보다 작은지를 판정하는 단계(114)로 진행하고, 만일 그러하면 양(Y)만큼 초과의 할당으로 어드레스 클러스터에 할당된 레코드 수를 감소시키고(114), 동일한 양(Y)만큼 여유 클러스터에 레코드의 할당을 증가시킨다(114). 예시적인 여유 임계치는 TCAM 내의 레코드의 10%인데, 즉 TCAM의 전체 크기의 10%이다. 예시적인 양 Y 레코드는 512 레코드이지만, 이 양은 TCAM이 배포될 수 있는 의도된 용례에 따라 변경될 수 있다. 방법(100)은 X에 대해 새로운 값을 선택함으로써 다른 어드레스 클러스터를 선택함으로써(116) 그리고 선택된 어드레스 클러스터 X 내의 비어 있지 않은 레코드 수를 결정하는 것(108)을 시작하는 전술된 단계를 반복함으로써 계속된다.
도 2는 도 1에 도시된 방법의 구현예로부터 발생하는 TCAM(200) 내의 클러스터로의 레코드의 할당을 도시한다. TCAM 어드레스 클러스터는 내림차순 프리픽스 길이에 의해 분류된다. 이하, 어드레스 클러스터의 네이밍은 /#의 패턴을 따르고, 여기서 #는 그 어드레스 클러스터 내에 저장될 어드레스 프리픽스 내의 비트의 수를 나타낸다. IPv4에 대한 최대 프리픽스 길이는 32 비트이고, 그 길이의 프리픽스는 그에 할당된 4K(4096) 레코드를 갖는 /32 어드레스 클러스터(202) 내에 저장될 것이다. 유사하게, 31 비트 IP 어드레스 프리픽스를 저장하기 위한 /31 어드레스 클러스터(204)는 또한 그에 할당된 4K 레코드를 갖는다. /30 어드레스 클러스터는 또한 그에 할당된 4K 레코드를 갖고, TCAM 탐색키(레코드 M)(206), TCAM 탐색키(레코드 M+1)(208), TCAM 탐색키(레코드 M+2)(210), TCAM 비어 있는 레코드(레코드 M+3)(212), 여유 공간(비어 있는 레코드)(214), 및 TCAM 비어 있는 레코드(레코드 M+4K)(216)를 포함하는 것으로서 더 상세히 나타내고 있다. TCAM(200)은 클러스터당 4K 레코드를 갖는 /29 내지 /25 어드레스 클러스터(218), 8K(8192) 레코드를 갖는 /24 어드레스 클러스터(220), 4K 레코드를 갖는 /23 어드레스 클러스터(222), 4K 레코드를 갖는 /22 어드레스 클러스터(224), 클러스터당 1K 내지 4K 레코드 중 임의의 것을 갖는 /21 내지 /17 어드레스 클러스터(226), 4K 레코드를 갖는 /16 어드레스 클러스터(228), 256 레코드를 갖는 /15 어드레스 클러스터(230), 클러스터당 할당된 4 내지 256 레코드의 범위를 갖는 /14 내지 /2 어드레스 클러스터(232), 4 레코드를 갖는 /1 어드레스 클러스터(234), 및 256 레코드를 갖는 /0 어드레스 클러스터(236)를 또한 포함한다. TCAM(200)은 그에 할당된 총 TCAM 레코드의 10%를 갖고 필요에 따라 어드레스 클러스터(202 내지 236)를 동적으로 성장시키기 위해 사용되는 여유 공간 클러스터(238)를 또한 포함한다.
도 3은 본 발명의 제 1 실시예에 따른 도 2의 TCAM(200)의 /24 어드레스 클러스터(220) 상에 수행되는 동적 클러스터 성장 동작(300)을 도시한다. 성장 동작(300)은 /24 어드레스 클러스터(220)에 500개의 비어 있는 레코드를 추가할 것이고, 이에 의해 그 클러스터에 할당된 레코드의 총 수를 증가시킨다. /24 어드레스 클러스터(200)는 사용된(또는 비어 있지 않은) 레코드(220a) 및 비어 있는 레코드(220b)를 포함하는 것으로서 상세히 나타내고, 그 중 후자의 것은 100개의 레코드가 있다. 마찬가지로, /1 어드레스 클러스터(234)는 사용된 레코드(234a) 및 비어 있는 레코드(234b)를 포함하는 것으로서 더 상세히 나타내고 있고, 그 중 후자는 10개의 레코드가 있다. 유사하게, /0 어드레스 클러스터(236)는 사용된 레코드(236a) 및 비어 있는 레코드(236b)를 포함하는 것으로서 더 상세히 나타내고 있고, 그 중 후자는 10개의 레코드가 있다. 여유 공간 클러스터(238)는 여기서 포워딩 정보 베이스(Forwarding Information Base: FIB)의 10%로서 여기에 나타낸, 그에 할당된 총 TCAM 레코드의 10%를 갖는다.
동적 클러스터 성장 동작(300)의 제 1 단계는 500개의 비어 있는 레코드만큼 /0 어드레스 클러스터(236)에 할당된 레코드의 수를 증가시켜(302), 이에 의해 그 클러스터 내의 비어 있는 레코드(236b)의 총 수가 510이 되게 한다. 이들 500개의 레코드는 여유 공간 클러스터(238)의 상위(최상위 어드레스)에서 여유 공간 클러스터(238)로부터 얻어진다. /0 어드레스 클러스터(236) 내의 비어 있지 않은(또는 사용된/점유된) 레코드(236a)는 "GrowIPClusterDownIntoAdjacentFreeSpace" 함수의 설명과 연관하여 전술된 방식으로, /0 어드레스 클러스터(236)의 상위로부터 롤링 다운되고(304), 이에 의해 /1 어드레스 클러스터(234) 내의 비어 있는 레코드(234b)의 수를 510개의 레코드로 증가시킨다(306). /1 어드레스 클러스터(234) 내의 비어 있지 않은 레코드(234a)는 /0 어드레스 클러스터(236) 내의 비어 있지 않은 레코드(236a)에 의해 행해졌던 것과 동일한 방식으로, /1 어드레스 클러스터(236)의 상위로부터 롤링 다운된다(308). /0 및 /1 어드레스 클러스터(236, 234) 상에 방금 수행된 것들과 유사한 롤링 다운 동작(312)은 /2 내지 /23 클러스터(232 내지 222) 상에 수행되고, 이에 의해 500개의 비어 있는 레코드가 /24 어드레스 클러스터(220)의 비어 있는 레코드(220b)에 추가되게 한다. 최종 결과는 /24 어드레스 클러스터(220) 내의 비어 있는 레코드(220b)의 수가 100개의 레코드로부터 600개의 레코드로 증가된 것이고, 이는 /24 어드레스 클러스터(220)에 할당된 500개의 레코드의 증가를 표현한다.
도 4는 본 발명의 제 1 실시예에 따른 도 2의 TCAM(200)의 /16 어드레스 클러스터(228) 상에 수행되는 동적 클러스터 축소 동작(400)을 도시한다. 축소 동작(400)은 /16 어드레스 클러스터(228)로부터 128개의 비어 있는 레코드를 제거할 것이고, 이에 의해 그 클러스터에 할당된 레코드의 총 수를 감소시킨다. /16 어드레스 클러스터(228)는 사용된 레코드(228a) 및 비어 있는 레코드(220b)를 포함하는 것으로서 상세히 나타내고, 그 중 후자의 것은 100개의 레코드가 있다. 마찬가지로, /1 어드레스 클러스터(234)는 사용된 레코드(234a) 및 비어 있는 레코드(234b)를 포함하는 것으로서 더 상세히 나타내고 있고, 그 중 후자는 10개의 레코드가 있다. 유사하게, /0 어드레스 클러스터(236)는 사용된 레코드(236a) 및 비어 있는 레코드(236b)를 포함하는 것으로서 더 상세히 나타내고 있고, 그 중 후자는 10개의 레코드가 있다. 여유 공간 클러스터(238)는 여기서 포워딩 정보 베이스(FIB)의 10%로서 여기에 나타낸, 그에 할당된 총 TCAM 레코드의 10%를 갖는다.
동적 클러스터 축소 동작(400)의 제 1 단계는 128개의 비어 있는 레코드만큼 /16 어드레스 클러스터(228)에 할당된 레코드의 수를 감소시켜(402), 이에 의해 그 클러스터 내의 비어 있는 레코드(228b)의 총 수가 3000이 되게 한다. 이는 "GrowIPClusterUpIntoAdjacentFreeSpace" 함수의 설명과 연관하여 전술된 방식으로, /15 내지 /2 어드레스 클러스터(230 내지 232)로 동시에 하나의 클러스터를 128개의 TCAM 레코드 위치만큼 비어 있지 않은 레코드를 연속적으로 롤링 업함으로써 행해져서, 이에 의해 /1 어드레스 클러스터(234) 내의 비어 있는 레코드(234b)의 수를 138개의 레코드로 증가시킨다(404). /0 어드레스 클러스터(236) 내의 비어 있지 않은 레코드(236a)는 "GrowIPClusterUpIntoAdjacentFreeSpace" 함수의 설명과 연관하여 전술된 방식으로, /0 어드레스 클러스터(236)의 상위로부터 롤링 업되어(408), 이에 의해 /1 어드레스 클러스터(234) 내의 비어 있는 레코드(234b)의 수를 10개의 레코드로 감소시킨다(406). /0 어드레스 클러스터(236) 내의 비어 있는 레코드(236b)는 이제 138개의 레코드이다. 마지막으로, 여유 공간 클러스터(238)에 할당된 레코드의 수는 /0 어드레스 클러스터(236)의 하위(최하위 어드레스)로부터 얻어진 128개의 비어 있는 레코드만큼 증가되어, 이에 의해 여유 공간 클러스터(238)가 TCAM(200) 내의 총 수의 레코드의 대략 10%에 동일한 레코드의 수로 그에 할당되게 한다.
도 5는 본 발명의 제 2 실시예에 따른 도 1에 도시된 방법을 수행하기 위한 장치(500)를 도시한다. 예를 들어, 장치(500)는 라우터일 수 있다. 장치는 프로세서(502), 프로세서(502)와 통신하는 메모리(504), 프로세서(502)와 통신하는 입출력(I/O) 포트(506), 및 프로세서(502)와 또한 통신하는 TCAM(508)을 포함한다. 메모리는 프로세서에 의해 실행될 때 전술된 방법(200) 및 연계된 동적 클러스터 성장 및 축소 동작(300, 400)이 TCAM(508) 상에서 수행되게 하는 명령을 갖는 프로그램(510)을 포함한다. 프로세서(502)는 TCAM(508)과 함께 장치(500)가 I/O 포트(506)를 통해 전달된 데이터 패킷 트래픽(512) 상에서 LPM 동작을 실행하는 것을 가능하게 한다.
수많은 수정, 변형 및 적응이 청구범위에 규정된 본 발명의 범주로부터 벗어나지 않고 전술된 본 발명의 실시예에 행해질 수도 있다.

Claims (15)

  1. 3진 내용 주소화 기억장치(ternary content addressable memory: TCAM) 내의 복수의 클러스터에 레코드를 동적으로 할당하는 방법에 있어서,
    각각의 수의 레코드를 제 1 유형의 상기 복수의 클러스터의 각각에 할당하는 단계와,
    복수의 비어 있는 레코드를 제 2 유형의 클러스터에 할당하는 단계와,
    상기 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 각각의 레코드의 수를 각각 모니터링하는 단계와,
    상기 제 1 유형의 각각의 클러스터에 대해, 상기 비어 있지 않은 레코드 수를 각각의 제 1 임계치와 비교하는 단계와,
    상기 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 증가시키는 단계 - 상기 증가시키는 단계는 해당 클러스터의 비어 있지 않은 레코드의 각각의 수가 해당 클러스터의 각각의 제 1 임계치를 초과하면 상기 비어 있지 않은 레코드를 반복적 방식으로 점진적으로 롤링 다운(rolling down)함으로써 수행됨 - 를 포함하는
    방법.
  2. 제 1 항에 있어서,
    각각의 수의 레코드를 제 1 유형의 상기 복수의 클러스터의 각각에 할당하는 상기 단계는, 각각의 인터넷 어드레스 프리픽스 길이에 각각의 상기 클러스터를 연계하는 단계를 더 포함하는
    방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    복수의 비어 있는 레코드를 제 2 유형의 클러스터에 할당하는 상기 단계는 할당된 레코드가 비어 있는 상태로 유지되는 여유 공간 클러스터(a free space cluster)에 상기 제 2 유형의 클러스터를 연계하는 단계를 더 포함하는
    방법.
  4. 제 2 항에 있어서,
    상기 비교하는 단계는 상기 비어 있지 않은 각각의 레코드 수를 상기 제 1 유형의 클러스터에 할당된 상기 각각의 수의 레코드의 각각의 제 1 퍼센트인 각각의 제 1 임계치와 비교하는 단계를 더 포함하는
    방법.
  5. 제 4 항에 있어서,
    상기 비교하는 단계는 상기 제 1 유형의 클러스터와 연계된 각각의 인터넷 어드레스 프리픽스 길이에 따라 상기 각각의 제 1 퍼센트를 결정하는 단계를 더 포함하는
    방법.
  6. 제 1 항, 제 2 항, 제 4 항 또는 제 5 항 중 어느 한 항에 있어서,
    상기 증가시키는 단계는,
    상기 제 2 유형의 클러스터에 할당된 레코드의 수를 제 1 레코드 수만큼 감소시키는 단계와,
    상기 제 1 유형의 소정의 클러스터에 할당된 각각의 레코드 수를 상기 제 1 레코드 수만큼 증분하는 단계를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 모니터링하는 단계와,
    상기 비어 있는 레코드의 수를 제 2 임계치와 비교하는 단계와,
    상기 비어 있는 레코드의 수가 상기 제 2 임계치보다 작으면 상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 단계를 더 포함하는
    방법.
  8. 제 7 항에 있어서,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 상기 단계는,
    상기 제 1 유형의 하나 이상의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각의 제 3 임계치와 비교하는 단계와,
    해당 클러스터의 비어 있지 않은 각각의 레코드 수가 해당 클러스터의 각각의 제 3 임계치보다 작으면 제 1 유형의 특정 클러스터에 할당된 각각의 수의 레코드를 제 2 레코드 수만큼 감소시키는 단계와,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 상기 제 2 레코드 수만큼 증가시키는 단계를 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수가 상기 제 2 임계치보다 크거나 같을 때까지,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 모니터링하는 단계와,
    상기 비어 있는 레코드의 수를 상기 제 2 임계치와 비교하는 단계와,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키는 단계를
    반복하는 단계를 더 포함하는
    방법.
  10. 3진 내용 주소화 기억장치(ternary content addressable memory: TCAM) 내의 복수의 클러스터에 레코드를 동적으로 할당하도록 구성된 장치로서,
    TCAM과,
    메모리와,
    상기 TCAM 및 상기 메모리와 통신하는 프로세서를 포함하되,
    상기 메모리는 명령어를 포함하는 소프트웨어 프로그램으로 구성되고,
    상기 명령어는, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금
    각각의 수의 레코드를 제 1 유형의 복수의 클러스터의 각각에 할당하고,
    복수의 비어 있는 레코드를 제 2 유형의 클러스터에 할당하며,
    상기 제 1 유형의 각각의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각 모니터링하고,
    상기 제 1 유형의 각각의 클러스터에 대해, 상기 비어 있지 않은 레코드 수를 각각의 제 1 임계치와 비교하며,
    상기 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 증가시키도록 - 상기 증가시키는 것은 해당 클러스터의 비어 있지 않은 레코드의 각각의 수가 해당 클러스터의 각각의 제 1 임계치를 초과하면 상기 비어 있지 않은 레코드를 반복적 방식으로 점진적으로 롤링 다운함으로써 수행됨 - 동작 가능하게 하는
    장치.
  11. 제 10 항에 있어서,
    상기 장치는 각각의 수의 레코드를 상기 제 1 유형의 복수의 클러스터의 각각에 할당 - 상기 할당은 각각의 인터넷 어드레스 프리픽스 길이에 각각의 상기 클러스터를 연계하는 것을 포함함 - 하도록 또한 동작 가능하고,
    상기 장치는 상기 제 1 유형의 클러스터에 할당된 각각의 수의 레코드의 각각의 제 1 퍼센트인 각각의 제 1 임계치와 상기 비어 있지 않은 레코드의 각각의 수를 비교하도록 또한 동작 가능하고,
    상기 장치는 상기 제 1 유형의 클러스터와 연계된 각각의 인터넷 어드레스 프리픽스 길이에 따라 상기 각각의 제 1 퍼센트를 결정하도록 또한 동작 가능한
    장치.
  12. 제 10 항에 있어서,
    상기 장치는 상기 제 2 유형의 클러스터에 복수의 비어 있는 레코드를 할당 - 상기 할당은 할당된 레코드가 비어 있는 상태로 유지되는 여유 클러스터에 상기 제 2 유형의 클러스터를 연계하는 것을 포함함 - 하도록 또한 동작 가능한
    장치.
  13. 제 10 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 장치는 상기 제 2 유형의 클러스터에 할당된 레코드의 수를 제 1 레코드 수만큼 감소시키고, 상기 제 1 유형의 소정의 클러스터에 할당된 레코드의 각각의 수를 상기 제 1 레코드의 수만큼 증분하도록 또한 동작 가능한
    장치.
  14. 제 13 항에 있어서,
    상기 장치는
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 모니터링하고,
    상기 비어 있는 레코드의 수를 제 2 임계치와 비교하며,
    상기 비어 있는 레코드의 수가 상기 제 2 임계치보다 작으면 상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드의 수를 증가시키도록 또한 동작 가능한
    장치.
  15. 제 14 항에 있어서,
    상기 장치는
    상기 제 1 유형의 하나 이상의 클러스터에 대해, 비어 있지 않은 각각의 레코드 수를 각각의 제 3 임계치와 비교하고,
    해당 클러스터의 비어 있지 않은 각각의 레코드 수가 해당 클러스터의 각각의 제 3 임계치보다 작으면 상기 제 1 유형의 특정 클러스터에 할당된 레코드의 각각의 수를 제 2 레코드 수만큼 감소시키며,
    상기 제 2 유형의 클러스터에 할당된 비어 있는 레코드 수를 상기 제 2 레코드 수만큼 증가시키도록 또한 동작 가능한
    장치.
KR1020147031793A 2012-05-14 2013-05-02 3진 내용 주소화 기억장치(tcam) 내의 클러스터로의 레코드의 동적 할당 KR101611119B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/470,833 US8924640B2 (en) 2012-05-14 2012-05-14 Dynamic allocation of records to clusters in a ternary content addressable memory
US13/470,833 2012-05-14
PCT/CA2013/050340 WO2013170373A1 (en) 2012-05-14 2013-05-02 Dynamic allocation of records to clusters in a ternary content addressable memory

Publications (2)

Publication Number Publication Date
KR20140144303A KR20140144303A (ko) 2014-12-18
KR101611119B1 true KR101611119B1 (ko) 2016-04-08

Family

ID=49549566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147031793A KR101611119B1 (ko) 2012-05-14 2013-05-02 3진 내용 주소화 기억장치(tcam) 내의 클러스터로의 레코드의 동적 할당

Country Status (6)

Country Link
US (1) US8924640B2 (ko)
EP (1) EP2850526A4 (ko)
JP (1) JP5948494B2 (ko)
KR (1) KR101611119B1 (ko)
CN (1) CN104285213A (ko)
WO (1) WO2013170373A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824756B2 (en) * 2013-08-13 2017-11-21 Globalfoundries Inc. Mapping a lookup table to prefabricated TCAMS
CN107896194B (zh) * 2018-01-02 2021-04-09 盛科网络(苏州)有限公司 一种路由查找方法、装置和存储介质
CN112087389B (zh) * 2019-06-14 2023-01-24 深圳市中兴微电子技术有限公司 一种报文匹配查表方法、系统、存储介质和终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119529A1 (en) * 2007-11-02 2009-05-07 Hitachi Ltd. Configuration optimization method for a storage system
US20110276752A1 (en) * 2010-05-05 2011-11-10 Juniper Networks, Inc. Power efficient and rule movement optimized tcam management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812882A (en) * 1994-10-18 1998-09-22 Lanier Worldwide, Inc. Digital dictation system having a central station that includes component cards for interfacing to dictation stations and transcription stations and for processing and storing digitized dictation segments
US6516383B1 (en) * 2001-05-30 2003-02-04 Cisco Technology, Inc. Techniques for efficient location of free entries for TCAM inserts
JP3699374B2 (ja) * 2001-08-15 2005-09-28 日本電信電話株式会社 経路表更新方法およびプログラムおよび記録媒体
US6532516B1 (en) * 2001-09-27 2003-03-11 Coriolis Networks, Inc. Technique for updating a content addressable memory
KR100745693B1 (ko) * 2006-09-29 2007-08-03 한국전자통신연구원 Tcam 테이블 관리 방법
US7706375B2 (en) * 2007-02-06 2010-04-27 Alcatel Lucent System and method of fast adaptive TCAM sorting for IP longest prefix matching
US8626618B2 (en) * 2007-11-14 2014-01-07 Panjiva, Inc. Using non-public shipper records to facilitate rating an entity based on public records of supply transactions
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US7974190B2 (en) * 2009-02-12 2011-07-05 Micrel, Inc. Dynamic queue memory allocation with flow control
US20100274947A1 (en) * 2009-04-27 2010-10-28 Hitachi, Ltd. Memory management method, memory management program, and memory management device
JP5278157B2 (ja) * 2009-05-15 2013-09-04 富士通株式会社 伝送装置および伝送方法
JP5467558B2 (ja) * 2009-09-09 2014-04-09 アラクサラネットワークス株式会社 ネットワーク中継装置及びメモリ制御方法
US8539184B2 (en) * 2009-09-23 2013-09-17 International Business Machines Corporation On demand storage group management with recapture
CN102185756A (zh) * 2011-03-15 2011-09-14 北京星网锐捷网络技术有限公司 Tcam共享存储方法及装置
CN102291296B (zh) * 2011-08-04 2016-12-21 中兴通讯股份有限公司 一种路由表的更新方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119529A1 (en) * 2007-11-02 2009-05-07 Hitachi Ltd. Configuration optimization method for a storage system
US20110276752A1 (en) * 2010-05-05 2011-11-10 Juniper Networks, Inc. Power efficient and rule movement optimized tcam management

Also Published As

Publication number Publication date
JP2015519660A (ja) 2015-07-09
US8924640B2 (en) 2014-12-30
KR20140144303A (ko) 2014-12-18
EP2850526A1 (en) 2015-03-25
EP2850526A4 (en) 2016-01-20
WO2013170373A1 (en) 2013-11-21
US20130304983A1 (en) 2013-11-14
JP5948494B2 (ja) 2016-07-06
CN104285213A (zh) 2015-01-14

Similar Documents

Publication Publication Date Title
US7606236B2 (en) Forwarding information base lookup method
US7827182B1 (en) Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations
US10530846B2 (en) Scheduling packets to destination virtual machines based on identified deep flow
US8699491B2 (en) Network element with shared buffers
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
US9086950B2 (en) Method for heap management
EP3562097B1 (en) Establishment for table entry of equal-cost path
US10326854B2 (en) Method and apparatus for data caching in a communications network
CN107040393B (zh) 一种路由管理方法和设备
KR101611119B1 (ko) 3진 내용 주소화 기억장치(tcam) 내의 클러스터로의 레코드의 동적 할당
US11570105B2 (en) Dynamic route profile storage in a hardware trie routing table
CN102291296A (zh) 一种路由表的更新方法及系统
CN110191135B (zh) Acl配置方法、装置、电子设备
JP7241194B2 (ja) メモリ管理方法及び装置
CN100397816C (zh) 在网络设备中对接收数据包进行分类的方法
CN107547408B (zh) 一种mac地址哈希冲突的处理方法和装置
CN101692653A (zh) 路由表的管理方法和装置
US10116588B2 (en) Large receive offload allocation method and network device
CN112398733B (zh) 流量调度转发方法及装置
Ma et al. A distributed storage framework of FlowTable in software defined network
CN111490972A (zh) 一种表项管理方法、装置、设备及机器可读存储介质
CN116938849B (zh) 流表规格智能调整方法及相关设备
CN116248349A (zh) 一种配置接入控制表项的方法及设备
CN111241146B (zh) 一种统计TopK-Frequency信息的方法和系统

Legal Events

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