KR100413528B1 - Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 - Google Patents
Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address 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
본 발명은 컴퓨터 네트워크에서 라우팅을 수행하는 라우터에 관한 것으로, 좀더 구체적으로는 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)
- LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에 있어서,프리픽스 길이가 같은 데이터의 띠(band)마다, 상기 띠에 포함된 데이터 중에서 주소가 가장 낮은 데이터의 주소와, 주소가 가장 높은 데이터의 다음 주소 를 기억하는 한 쌍의 포인터를 제공하는 단계와,CAM의 룩업테이블에 데이터를 추가할 경우에, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠에 대한 한 쌍의 포인터가 기억하는 주소의 데이터를 이동시킴으로써 추가될 데이터가 기억될 공간을 마련하는 단계를 포함하는 룩업테이블 관리 방법.
- 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 방법에 있어서,프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와,CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하는 단계를 포함하는 룩업테이블 관리 방법.
- 제2항에 있어서,상기 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 각 하위포인터와 상위포인터가 기억하는 주소를 하나씩 다음 주소를 기억하도록 상기 하위포인터와 상위포인터의 값을 갱신하고, 추가할 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소를 다음 주소를 기억하도록 상기 상위포인터의 값을 갱신하는 단계를 포함하는 룩업테이블 관리 방법.
- 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블에 데이터를 추가하는 방법에 있어서,프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 제공하는 단계와,상기 CAM의 룩업테이블에 데이터 추가명령을 수신하는 단계와,추가될 데이터를 기록할 공간을 제공하도록 추가될 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하는 단계와,상기 추가될 데이터의 프리픽스 길이와 동일한 프리픽스 길이를 가지는 데이터의 띠의 상위포인터가 기억하는 주소에 상기 추가될 데이터를 기록하는 단계를 포함하는 데이터 추가 방법.
- 프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 LPM(Longest Prefix Matching)을 사용하는 CAM(Content Addressable Memory)의 룩업테이블을 관리하는 장치에 있어서,프리픽스 길이가 긴 데이터를 낮은 주소부터 저장하는 룩업테이블을 포함하는 CAM과,프리픽스 길이가 같은 데이터의 띠(band)마다 프리픽스 길이가 같은 데이터 중에서 주소가 가장 낮은 데이터의 주소를 기억하는 하위포인터와, 프리픽스 길이가 같은 데이터 중에서 주소가 가장 높은 데이터의 다음 주소를 기억하는 상위포인터를 포함하는 포인터 저장부와,CAM의 룩업테이블에 데이터를 추가할 경우, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터의 각 띠에 대해서, 상기 각 띠의 하위포인터가 기억하는 주소의 데이터를 상기 각 띠의 상위포인터가 기억하는 주소에 기록하고, 추가할 데이터의 프리픽스 길이와 동일한 길이를 가지는 데이터의 띠에 대한 상위포인터가 기억하는 주소에 추가할 데이터를 기록하며, 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신하는 테이블 관리부를 포함하는 관리장치.
- 제5항에 있어서,상기 테이블 관리부는 상기 포인터 저장부에 포함된 상위포인터와 하위포인터가 기억하는 주소를 갱신할 때, 추가할 데이터의 프리픽스 길이 미만의 프리픽스 길이를 가지는 데이터 띠의 상위포인터와 하위포인터는 그 상위포인터와 하위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신하고, 추가할 데이터의 프리픽스길이와 동일한 프리픽스 길이를 가지는 데이터 띠의 상위포인터를 그 상위포인터가 기억하는 주소의 바로 다음의 높은 주소로 갱신하는 관리장치.
- 제5항에 있어서,상기 상위포인터와 상기 하위포인터는 레지스터로 구현되는 관리장치.
- 제1항 내지 제4항중 어느 한 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
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)
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)
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 |
-
2001
- 2001-11-30 KR KR10-2001-0075275A patent/KR100413528B1/ko not_active IP Right Cessation
-
2002
- 2002-05-02 US US10/136,959 patent/US7154892B2/en active Active
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 |