KR100413528B1 - Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 - Google Patents

Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 Download PDF

Info

Publication number
KR100413528B1
KR100413528B1 KR10-2001-0075275A KR20010075275A KR100413528B1 KR 100413528 B1 KR100413528 B1 KR 100413528B1 KR 20010075275 A KR20010075275 A KR 20010075275A KR 100413528 B1 KR100413528 B1 KR 100413528B1
Authority
KR
South Korea
Prior art keywords
data
address
pointer
band
prefix length
Prior art date
Application number
KR10-2001-0075275A
Other languages
English (en)
Other versions
KR20030044506A (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 한국전자통신연구원
Priority to KR10-2001-0075275A priority Critical patent/KR100413528B1/ko
Priority to US10/136,959 priority patent/US7154892B2/en
Publication of KR20030044506A publication Critical patent/KR20030044506A/ko
Application granted granted Critical
Publication of KR100413528B1 publication Critical patent/KR100413528B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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/7453Address table lookup; Address filtering using hashing
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에 관한 것이다. 상기 방법은, 프리픽스 길이가 같은 데이터의 띠(band)마다, 상기 띠에 포함된 데이터 중에서 주소가 가장 낮은 데이터의 주소와 주소가 가장 높은 데이터의 다음 주소를 기억하는 한 쌍의 포인터를 제공하는 단계와, CAM의 룩업테이블에 데이터를 추가할 경우, 추가되는 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠에 존재하는 한쌍의 포인터가 기억하는 주소의 데이터를 이동시키고 추가될 데이터 띠의 상위포인터가 가리키는 공간에 추가 데이터를 기록하는 단계를 포함한다. 이와 같은 본 발명에 의하면, 룩업테이블의 데이터 추가를 간단하고 신속히 수행할 수 있다.

Description

LPM 기반 CAM의 룩업 테이블 관리 방법, 장치 및 그 기록매체 {LPM-based CAM look-up-table managing method, the apparatus thereof and the recording medium thereof}
본 발명은 컴퓨터 네트워크에서 라우팅을 수행하는 라우터에 관한 것으로, 좀더 구체적으로는 IP 패킷을 읽어 IP패킷의 목적지 주소를 참조하여 출력포트를 찾는 IP 룩업 테이블을 관리하는 방법 및 그 장치에 관한 것이다.
도 1에 종래 라우터에서 수행되는 라우팅을 위한 포워딩 엔진의 블럭도가 도시되어 있다. 라우터의 포워딩 엔진(110)은 들어오는 IP 패킷(100)에서 목적지 주소를 추출하고, 상기 목적지 주소에 해당하는 다음 홉을 구하기 위하여 다음 홉 결정부(120)는 다음 홉에 관한 정보를 가지고 있는 포워딩 테이블(130)을 참조하여 다음 홉을 구하고, IP 패킷을 다음 홉으로 전달한다.
여기서, 목적지 주소를 이용하여 다음 홉을 찾는 경우 IP 패킷의 목적지 주소와 가장 긴 프리픽스(prefix) 항목이 일치하는 항목을 찾는 LPM(Longest Prefix Matching) 방법이 있는데, 이러한 LPM을 구현하는 데는 여러 가지 방법이 있다.
LPM을 구현하기 위하여 도 2에 도시된 바와 같이 이진 트리(binary trie)의 변형된 형태의 트리(trie)를 이용하는 방법이 있다. 도2에서 노드(210)는 테이블의 0* 프리픽스에 해당하는 노드(Node)이고, 노드(220)은 10* 프리픽스, 노드(230)은 111* 프리픽스, 노드(240)은 11010* 프리픽스에 해당하는 노드이다. 그러나, 이와 같은 트리 구현 방법은 매칭되는 프리픽스(prefix)를 찾는 시간이 일정하지 않다. 즉, 일치된 목적지 주소의 프리픽스가 1비트인 경우에는 1번, N비트인 경우에는 N번의 비교를 해야 일치되는 가장 긴 프리픽스(prefix)를 찾을 수 있다는 문제점이 있다.
이와 같은 트리 형태의 문제점을 해결하기 위하여 CAM(Content Addressable Memory)이라는 특수한 형태의 메모리를 사용하여 LPM을 구현하는 방법이 있다. 이러한 CAM은 목적지 주소 데이터를 입력하면 프리픽스(prefix)가 일치(matching)되는 주소를 출력하며, 2개 이상의 프리픽스(prefix)가 일치하는 경우에는 주소가 낮은 쪽의 주소를 출력하도록 구현하는 것이 일반적이다. 도 3에 이러한 CAM을 이용하여 LPM을 구현한 포워딩 테이블(300)을 도시하였으며, 예를 들어, 패킷에 포함된 목적지주소가 "103.23.122.7"이면, 포워딩 테이블에 저장된 이와 프리픽스가 일치하는 항목들 중에서 가장 낮은 주소에 저장된 다음 홉 "107.3.2.22"가 추출된다. 따라서, LPM을 구현하기 위해서는 CAM에 프리픽스(prefix)가 긴 순서로 낮은 주소부터 저장할 필요가 있다.
따라서, 이와 같이 CAM의 룩업테이블(포워딩 테이블)의 데이터를 프리픽스 길이가 긴 순서로 낮은 주소부터 저장되도록 유지하기 위해서는, CAM의 룩업테이블에 새로운 데이터를 추가하는 경우 간단하고 효율적으로 룩업테이블을 관리해야 할 필요가 있다.
본 발명은 IP 패킷 포워딩에 사용되는 CAM의 룩업테이블에 프리픽스(prefix) 데이터를 추가하는 경우에, 룩업테이블 관리를 간단히 하고 데이터를 신속히 추가하기 위한 것이다.
도 1은 종래기술의 라우터에 있는 포워딩 엔진의 구성을 개략적으로 도시한 블럭도,
도 2는 종래기술에서 LPM을 이진 트리로 구현한 개념도,
도 3은 종래기술에서 LPM을 CAM으로 구현한 포워딩 테이블을 도시한 도면,
도 4는 본 발명에 따른 포워딩 테이블 관리장치의 블럭도,
도 5는 본 발명에 따른 포워딩 테이블의 개념도,
도 6은 최대 프리픽스 길이 32인 예의 경우 본 발명에 따른 포워딩 테이블의 개념도,
도 7은 본 발명에 따라 CAM 테이블에 데이터를 추가하는 과정을 나타내는 흐름도,
도 8은 도 6에 도시된 예를 이용하여 CAM 테이블에 데이터를 추가하는 과정을 설명하기 위한 것으로, 데이터 추가전의 테이블 구성을 도시하는 도면,
도 9는 도 6은 도시된 예를 이용하여 CAM 테이블에 데이터를 추가하는 과정을 설명하기 위한 것으로, 데이터 추가후의 데이블 구성을 도시한 도면.
전술한 바와 같은 목적을 달성하기 위한 본 발명의 하나의 특징은, LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에서, 프리픽스 길이가 같은 데이터의 띠(band)마다, 상기 띠에 포함된 데이터 중에서 주소가 가장 낮은 데이터의 주소와, 주소가 가장 높은 데이터의 다음 주소 를 기억하는 한 쌍의 포인터를 제공하는 단계와, CAM의 룩업테이블에 데이터를 추가할 경우에, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠에 대한 한 쌍의 포인터가 기억하는 주소의 데이터를 이동시킴으로써 추가될 데이터가 기억될 공간을 마련하는 단계를 포함하는 것이다.
본 발명의 다른 특징은, 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에서, 프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와, CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하는 단계를 포함하는 것이다.
여기서, 상기 관리방법은, 상기 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 각 하위포인터와 상위포인터가 기억하는 주소를 하나씩 다음 주소를 기억하도록 상기 하위포인터와 상위포인터의 값을 갱신하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소를 다음 주소를 기억하도록 상기 상위포인터의 값을 갱신하는 단계를 더 포함한다.
본 발명의 또다른 특징은, 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블에 데이터를 추가하는 방법에서, 프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와, 상기 CAM의 룩업테이블에 데이터 추가명령을 수신하는 단계와, 추가될 데이터를 기록할 공간을 제공하도록 추가될 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하는 단계와, 상기 추가될 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠의 상위포인터가 기억하는 주소에 상기 추가될 데이터를 기록하는 단계를 포함하는 것이다.
본 발명의 또다른 특징은, 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 장치에서, 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 룩업테이블을 포함하는 CAM과, 프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 포함하는 포인터 저장부와, CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하며, 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신하는 테이블 관리부를 포함하는 것이다.
바람직하게는, 상기 테이블 관리부는 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신할 때, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터 띠의 상위포인터와 하위포인터는 그 상위포인터와 하위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신하고, 추가할 데이터의 프리픽스길이와 동일한 프리픽스 길이를 가지는 데이터 띠의 상위포인터를 그 상위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신한다.
바람직하게는, 상기 상위포인터와 상기 하위포인터는 레지스터로 구현될 수있다.
본 발명의 또다른 특징은 상기 룩업테이블 관리방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
이제, 첨부된 도 4 내지 9를 참조하여 본 발명을 상세히 설명한다.
도 4에 본 발명에 따른 테이블 관리 장치(410)의 일 예가 도시된다. 테이블 관리 장치(410)는 포인터 저장부(420)와, 테이블 관리부(440)와, CAM 제어부(450)를 포함하며, 또한 CPU(430)와 CAM(460)이 도시되어 있다.
테이블 관리부(440)는 CPU와의 인터페이스를 갖고, 포인터 저장부(420)와 CAM 제어부(450)를 제어한다. 즉, CPU로부터 CAM 테이블에 데이터 추가명령을 수신하여 CAM(460)에 저장된 룩업 테이블을 갱신하도록 CAM 제어부(450)를 구동하고, 포인터 저장부(420)에 저장된 포인터들을 갱신한다.
CAM 제어부(450)는 포인터 저장부(420) 및 테이블 관리부(440)와의 인터페이스를 갖고, CAM을 제어하여 CAM(460)에 저장된 룩업테이블의 데이터를 갱신한다. 즉, CAM 제어부(450)는 테이블 관리부(440)로부터 제어명령을 받아서 CAM(460)을 구동하여 CAM에 저장된 데이터의 검색, 읽기, 쓰기 명령 등을 수행한다.
포인터 저장부(420)는 CAM에 저장된 룩업테이블(이하에서는, CAM 테이블이라 한다)의 위치 데이터를 저장하는 포인터들을 포함한다. 상기 포인터 저장부(420)는 프리픽스 길이 0의 상위포인터 UP(0), 하위포인터 LP(0)의 한 쌍의 포인터로부터 프리픽스 길이 N/2-1의 상위포인터 UP(N/2-1), 하위포인터 LP(N/2-1)의 한 쌍의 포인터까지 총 N개의 포인터를 가지며, N개의 포인터 중에서 하위포인터는 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터를 가리키고, 상위포인터는 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 데이터를 가리킨다. 즉, 하위포인터는 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하며, 상위포인터는 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 주소의 다음 주소를 기억한다. 이와 같이 포인터 저장부에 포함된 상위포인터들과 하위포인터들은 예를 들어, 레지스터들로 구현할 수 있다.
도 5에 CAM 테이블에 저장되는 데이터와 그 데이터를 가리키는 포인터를 도시하였다. 도 5의 (510)은 길이 i의 프리픽스를 갖는 데이터의 띠(band)이고, 이러한 데이터의 띠에는 길이 i의 프리픽스를 갖는 데이터들이 순서 없이 저장되며, (520)은 길이 i-1의 프리픽스를 갖는 데이터의 띠(band)이고, 이러한 데이터의 띠에는 길이 i-1의 프리픽스를 갖는 데이터들이 역시 순서 없이 저장된다. 이와 같은 이유로, 데이터 추가 등의 갱신을 해야 하는 경우 데이터의 띠의 가장 하위주소에 있는 데이터를 가장 상위주소의 다음 주소에 저장하도록 구현할 수 있는 것이다.
길이 i의 프리픽스를 갖는 데이터의 띠(510)에 저장된 데이터들의 주소 영역 중에서 가장 낮은 주소의 데이터는 하위포인터인 LP(i)가 가리키고, 데이터의 띠(510)에 저장된 데이터들의 주소 영역 중에서 가장 높은 주소의 다음 주소의 데이터는 상위포인터인 UP(i)가 가리키고 있다. 따라서, 길이 i-1의 프리픽스를 갖는 데이터의 띠의 하위포인터인 LP(i-1)은 UP(i)와 동일한 데이터를 가리키고, 길이 i+1의 프리픽스를 갖는 데이터의 띠의 상위포인터인 UP(i+1)은 LP(i)와 동일한 데이터를 가리키고 있다. 여기서, 포인터가 데이터를 가리킨다는 말은 해당 포인터가 해당 데이터의 주소를 기억한다는 의미이다.
이와 같은 데이터의 띠를 N/2-1이 32이고 모든 띠 데이터가 존재할 경우의 일 예를 도 6에 도시하였다. 프리픽스 길이 0의 띠 데이터는 디폴트(default) 데이터로 일치하는 프리픽스가 없을 경우에 사용하는 데이터이다. 보통 1개의 데이터를 갖는다.
도 5에 도시한 바와 같이 동일한 길이의 프리픽스를 갖는 데이터의 띠마다 각각 상위포인터와 하위포인터를 두고, 임의의 길이의 프리픽스를 갖는 데이터를 추가하여야 하는 경우 추가해야 하는 데이터의 프리픽스 길이보다 짧은 길이의 프리픽스를 갖는 데이터의 띠에 대해서, 각 띠의 하위포인터가 가리키는 데이터를 각 띠의 상위포인터가 가리키는 주소에 이동시켜 저장함으로써, 새로 추가해야 하는 데이터를 저장할 공간을 비워둘 수 있다. 예를 들어, 도 5에서 추가해야 하는 데이터가 길이 i의 프리픽스를 갖는 경우, LP(0)이 가리키는 데이터를 읽어서 UP(0)이 가리키는 데이터공간에 저장하고, LP(1)이 가리키는 데이터를 읽어서 UP(1)이 가리키는 데이터공간에 저장하고, 이와 같은 과정을 반복하여, LP(i-1)이 가리키는 데이터를 읽어서 UP(i-1)이 가리키는 데이터공간에 저장하고, 추가하려는 길이 i의 프리픽스를 갖는 데이터를 UP(i)가 가리키는 데이터공간에 저장하면 최종적으로 데이터 갱신이 완료된다. 이와 같이 새로 데이터를 추가해야 하는 경우 동일한 길이의 프리픽스 데이터의 띠에 포함된 데이터 중에서 포인터가 가리키는 데이터들만을갱신하고 데이터의 띠에 포함된 데이터 중에서 포인터들이 가리키는 데이터들 사이에 있는 데이터들은 갱신할 필요가 없으므로, 간단하고 신속히 데이터를 추가할 수 있다.
또한, 이때 포인터의 관리를 위해서는, 데이터 갱신이 일어나는 데이터공간을 가리키는 포인터의 주소 데이터를 다음 주소 데이터로 갱신하면 된다.
예를 들어, 모든 길이의 프리픽스 데이터의 띠가 존재한다고 가정하는 경우, 길이 2의 프리픽스 데이터를 추가할 경우에는 2회의 데이터 이동이 일어나고, 2회의 데이터 이동 후에 빈 데이터공간 즉, UP(2)가 가리키는 데이터공간에 새로운 데이터를 추가할 수 있으며, 포인터는 UP(0), LP(0), UP(1), LP(1), UP(2) 5개의 포인터가 기억하는 주소데이터를 바로 다음 주소 데이터로 갱신하는 것이다.
다음은 도7을 참조하여, 본 발명에 따른 데이터 추가 동작을 설명한다.
CPU(430)로부터 데이터 추가 명령을 테이블 관리부(440)가 수신하면(단계710), 테이블 관리부(440)는 데이터 검색 명령을 CAM 제어부(450)에 보내고, CAM 제어부(450)는 CAM(460)의 룩업테이블을 검색하여 해당 데이터가 있는지를 검색한다(단계720). 검색결과 해당 데이터가 존재하지 않는 경우에 테이블 관리부(440)는 CAM 제어부(450)를 구동하여 CAM 테이블을 조정하고(단계730), 포인터 저장부(420)에 포함된 포인터 데이터(포인터가 기억하는 주소)를 갱신하며, CAM 제어부(450)로 하여금 추가해야 하는 데이터를 CAM 테이블에 저장한다(단계740).
이제, 도 8 및 도 9를 참조하여, CAM 테이블에 데이터를 추가하는 과정의 일 예를 상세히 설명한다.
상기 CAM 테이블에는 프리픽스 길이 0을 가지는 데이터의 띠부터 프리픽스 길이 32를 가지는 데이터의 띠까지 모든 프리픽스 길이의 데이터의 띠가 존재한다고 가정하며, 프리픽스 길이가 0인 데이터의 띠에는 "A", "B" 두 데이터가 저장되고, 프리픽스 길이가 1인 데이터의 띠에는 "C", "D" 두 데이터가 저장되고, 프리픽스 길이가 29인 데이터의 띠에는 "I", "H", "G" 등의 데이터가 저장되고, 프리픽스 길이가 30인 데이터의 띠에는 "L", "K", "J" 세 개의 데이터가 저장되고, 프리픽스 길이가 31인 데이터의 띠에는 "N", "M" 두개의 데이터가 저장되고, 프리픽스 길이가 32인 데이터의 띠에는 "O" 한 개의 데이터가 저장된다. LP(32)는 0번지를 가리키고, UP(32), LP(31)은 1번지를 가리키며, UP(31), LP(30)은 3번지를 가리키며, UP(30), LP(29)는 6번지를 가리키고, UP(2), LP(1)은 200번지를 가리키고, UP(1), LP(0)은 202번지를 가리키고, UP(0)는 주소 204번지를 가리킨다고 가정한다.
이때, 길이가 30인 프리픽스를 갖는 데이터 "X"를 추가한다고 가정하자.
길이가 0인 프리픽스를 갖는 데이터의 띠가 CAM 테이블의 높은 주소에 있으므로 스텝1에서 LP(0)의 데이터를 UP(0)에 옮긴다. 즉, LP(0)가 가리키는 데이터 "B"를 읽어서 UP(0)가 가리키는 공간인 204번지에 기록한다. 그러면, 길이가 0인 프리픽스를 갖는 데이터인 "A"와 "B"는 203번지와 204번지에 채워지게 되므로, UP(0)가 기억하는 주소는 205번지로 갱신하고, LP(0)가 기억하는 주소는 203번지로 갱신한다.
이와 같은 스텝1에 의해, UP(1)의 데이터 공간인 202번지가 비어있게 된다. 따라서, 스텝2에서 LP(1)이 가리키는 데이터 "D"를 읽어서 UP(1)이 가리키는 데이터공간인 202번지에 기록할 수 있다. 그리고, 스텝1에서와 마찬가지로, 길이가 1인 프리픽스를 갖는 데이터인 "C"와 "D"는 201번지와 202번지에 채워지게 되므로, UP(1)가 기억하는 주소는 203번지로 갱신하고, LP(1)가 기억하는 주소는 201번지로 갱신한다.
이와 같은 스텝2에 의해, UP(2)의 데이터 공간인 200번지가 비어있게 된다. 따라서, 스텝3에서 LP(2)가 가리키는 데이터를 읽어서 UP(2)가 가리키는 데이터공간인 200번지에 기록한다. 이와 같이 순차적으로 LP(i)가 가리키는 데이터공간의 데이터를 읽어서 UP(i)가 가리키는 데이터공간에 기록한다.
이렇게 하여 스텝30에서는 LP(29)가 가리키는 데이터 "I"를 읽어서 UP(29)가 가리키는 데이터공간에 기록하고, UP(29)가 기억하는 주소를 하나 다음 주소로 갱신하고, LP(29)가 기억하는 주소를 7번지로 갱신한다.
이와 같은 스텝30에 의해 UP(30)이 가리키는 데이터 공간인 6번지는 비어있게 된다. 따라서, 최종적으로 UP(30)이 가리키는 공간인 6번지에 새로운 데이터 "X"를 추가하면 테이블 갱신이 완료되며, 프리픽스 길이가 30인 데이터의 띠의 상위 포인터인 UP(30)을 다음 주소인 7번지로 갱신하면 포인터 갱신까지 완료된다.
이와 같은 방법에 의해 데이터가 추가되어 갱신이 완료된 CAM 테이블을 도 9에 도시하였다. 데이터의 이동은 각 띠의 데이터 중에서 포인터가 가리키는 주소의 데이터인 "I", ... "D", "B"에 대해서만 일어나고, 데이터 띠의 나머지 데이터들 즉, "A", "C",. .., "G", "H", "J", "K", "L", "M", "N", "O"에 대해서는 일어나지 않는다. 또한, 데이터를 추가한 후 UP(0)는 길이가 0인 프리픽스를 가지는데이터의 띠의 상위주소의 다음 데이터를 가리켜야 하므로 그 주소를 하나 증가시켜 205가 되어야 하며, 이에 따라 나머지 포인터들이 가리키는 번지도 하나 상위주소로 변경되었음을 알 수 있다. 다만, 새로 추가되는 프리픽스를 가지는 데이터 띠의 하위포인터가 가리키는 주소공간 즉, 본 예에서 "L"을 가리키는 하위포인터 LP(30)의 번지는 변경되지 않음을 주의해야 한다.
상기 예에서는 매 데이터의 띠마다 하나의 데이터의 이동을 시키고 나서 그 데이터가 포함되는 데이터 띠의 상위포인터와 하위포인터를 갱신하고, 다음 데이터를 이동시키는 것으로 설명하였으나, 예를 들어 모든 데이터를 이동시킨 다음에 포인터 갱신작업을 일괄적으로 수행할 수도 있다는 것은 당업자라면 충분히 이해할 것이다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
상술한 바와 같이 프리픽스 길이가 동일한 데이터의 각 띠에 상위포인터와하위포인터를 두고, 데이터를 추가할 경우에 각 데이터의 띠의 상위포인터와 하위포인터가 가리키는 데이터만을 이동하여 추가할 데이터가 들어갈 공간을 마련함으로써 간단하고 신속하게 CAM의 룩업테이블을 갱신할 수 있다.

Claims (8)

  1. LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에 있어서,
    프리픽스 길이가 같은 데이터의 띠(band)마다, 상기 띠에 포함된 데이터 중에서 주소가 가장 낮은 데이터의 주소와, 주소가 가장 높은 데이터의 다음 주소 를 기억하는 한 쌍의 포인터를 제공하는 단계와,
    CAM의 룩업테이블에 데이터를 추가할 경우에, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠에 대한 한 쌍의 포인터가 기억하는 주소의 데이터를 이동시킴으로써 추가될 데이터가 기억될 공간을 마련하는 단계를 포함하는 룩업테이블 관리 방법.
  2. 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에 있어서,
    프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와,
    CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하는 단계를 포함하는 룩업테이블 관리 방법.
  3. 제2항에 있어서,
    상기 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 각 하위포인터와 상위포인터가 기억하는 주소를 하나씩 다음 주소를 기억하도록 상기 하위포인터와 상위포인터의 값을 갱신하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소를 다음 주소를 기억하도록 상기 상위포인터의 값을 갱신하는 단계를 포함하는 룩업테이블 관리 방법.
  4. 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블에 데이터를 추가하는 방법에 있어서,
    프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와,
    상기 CAM의 룩업테이블에 데이터 추가명령을 수신하는 단계와,
    추가될 데이터를 기록할 공간을 제공하도록 추가될 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하는 단계와,
    상기 추가될 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠의 상위포인터가 기억하는 주소에 상기 추가될 데이터를 기록하는 단계를 포함하는 데이터 추가 방법.
  5. 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 장치에 있어서,
    프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 룩업테이블을 포함하는 CAM과,
    프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 포함하는 포인터 저장부와,
    CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하며, 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신하는 테이블 관리부를 포함하는 관리장치.
  6. 제5항에 있어서,
    상기 테이블 관리부는 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신할 때, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터 띠의 상위포인터와 하위포인터는 그 상위포인터와 하위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신하고, 추가할 데이터의 프리픽스길이와 동일한 프리픽스 길이를 가지는 데이터 띠의 상위포인터를 그 상위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신하는 관리장치.
  7. 제5항에 있어서,
    상기 상위포인터와 상기 하위포인터는 레지스터로 구현되는 관리장치.
  8. 제1항 내지 제4항중 어느 한 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR10-2001-0075275A 2001-11-30 2001-11-30 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 KR100413528B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2001-0075275A KR100413528B1 (ko) 2001-11-30 2001-11-30 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체
US10/136,959 US7154892B2 (en) 2001-11-30 2002-05-02 Method and apparatus for managing LPM-based CAM look-up table, and recording medium therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0075275A KR100413528B1 (ko) 2001-11-30 2001-11-30 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체

Publications (2)

Publication Number Publication Date
KR20030044506A KR20030044506A (ko) 2003-06-09
KR100413528B1 true KR100413528B1 (ko) 2004-01-03

Family

ID=19716486

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0075275A KR100413528B1 (ko) 2001-11-30 2001-11-30 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체

Country Status (2)

Country Link
US (1) US7154892B2 (ko)
KR (1) KR100413528B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100459542B1 (ko) * 2002-07-02 2004-12-03 삼성전자주식회사 인터넷 프로토콜 주소 룩-업 장치
KR100460188B1 (ko) * 2002-07-02 2004-12-08 삼성전자주식회사 인터넷 프로토콜 주소 룩-업 방법
KR100541846B1 (ko) * 2002-11-27 2006-01-11 한국전자통신연구원 3 단계 테이블로 구성된 아이피 주소 룩업 시스템 및 그방법
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US20050083937A1 (en) * 2003-10-15 2005-04-21 Hyesook Lim IP address lookup method using pipeline binary tree, hardware architecture, and recording medium
KR100814077B1 (ko) * 2006-10-09 2008-03-14 이화여자대학교 산학협력단 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치
CN101874822A (zh) 2009-04-27 2010-11-03 玫琳凯有限公司 植物性抗痤疮制剂
EP3566691B1 (en) 2011-12-19 2024-04-17 Mary Kay Inc. Cosmetic method of whitening skin and evening tone with azuki beans
EP2887165A1 (en) * 2013-12-20 2015-06-24 Omron Corporation Computation unit, output control method, and program

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6118760A (en) 1997-06-30 2000-09-12 Sun Microsystems, Inc. Management of entries in a network element forwarding memory
US6237061B1 (en) * 1999-01-05 2001-05-22 Netlogic Microsystems, Inc. Method for longest prefix matching in a content addressable memory
US6574702B2 (en) * 1999-02-23 2003-06-03 Netlogic Microsystems, Inc. Method and apparatus for determining an exact match in a content addressable memory device
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream

Also Published As

Publication number Publication date
US7154892B2 (en) 2006-12-26
KR20030044506A (ko) 2003-06-09
US20030103498A1 (en) 2003-06-05

Similar Documents

Publication Publication Date Title
US7774538B2 (en) Method for ternary contents address memory table management
US20040133590A1 (en) Tree data structure with range-specifying keys and associated methods and apparatuses
US7415463B2 (en) Programming tree data structures and handling collisions while performing lookup operations
US6618760B1 (en) Forwarding information retrieval technique
US6560610B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
US5983223A (en) Method and apparatus for determining a longest matching prefix from a dictionary of prefixes
US6490592B1 (en) Method of and apparatus for generating a tree data structure supporting longest match lookup
US20080228798A1 (en) Method and apparatus for deep packet processing
EP1156432B1 (en) Apparatus, method, data structure and recording medium for data retrieval by accessing retrieval tables
EP1485827A2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7453883B1 (en) Method for compressing route data in a router
US6574701B2 (en) Technique for updating a content addressable memory
KR100413528B1 (ko) Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체
US6532516B1 (en) Technique for updating a content addressable memory
US7233579B1 (en) Routing table for forwarding Internet Protocol (IP) packets through a communications network
US6961809B2 (en) Managing a position-dependent data set that is stored in a content addressable memory array at a network node
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
US6680916B2 (en) Method for using a balanced tree as a base for a routing table
RU2233473C2 (ru) Устройство и способ выполнения высокоскоростного поиска маршрутов протокола интернет и управления таблицами маршрутизации/пересылки
KR100424244B1 (ko) 출력 결정 방법 및 저장된 데이터 구조체
JP2004056639A (ja) アドレス検索装置
KR100420957B1 (ko) 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
US20050102428A1 (en) Memory management for ternary CAMs and the like
KR100420960B1 (ko) IPv4에서 사용되는 LPM 기반의 컨텐트주소지정가능 메모리(CAM) 룩업 테이블 관리 방법 및장치

Legal Events

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

Payment date: 20121206

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20131205

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee