KR20040003258A - 인터넷 프로토콜 주소 룩-업 방법 - Google Patents
인터넷 프로토콜 주소 룩-업 방법 Download PDFInfo
- Publication number
- KR20040003258A KR20040003258A KR1020020037911A KR20020037911A KR20040003258A KR 20040003258 A KR20040003258 A KR 20040003258A KR 1020020037911 A KR1020020037911 A KR 1020020037911A KR 20020037911 A KR20020037911 A KR 20020037911A KR 20040003258 A KR20040003258 A KR 20040003258A
- Authority
- KR
- South Korea
- Prior art keywords
- prefix
- entry
- routing
- mask
- address
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- 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
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4552—Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 라우팅 테이블의 프리픽스들을 길이 순서대로 정렬할 필요나 피드백 검색을 할 필요가 없이 IP(Internet Protocol) 주소를 룩-업할 수 있는 IP 주소 룩-업 방법을 제공한다. 이를 위한 본 발명의 IP 주소 룩-업 방법은, 3원 CAM(Content Addressable Memory)에서 적어도 하나 이상의 매치 라인이 셋트되는 경우 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들의 프리픽스 길이를 비교하는 과정과, 프리픽스 길이가 가장 긴 마스크 스트링에 해당하는 라우팅 엔트리를 LPM(Longest Prefix Matching) 엔트리로서 결정하는 과정을 구비한다.
Description
본 발명은 인터넷 프로토콜(IP: Internet Protocol) 어드레싱(addressing)에 관한 것으로, 특히 3원(ternary) CAM(Content Addressable Memory)을 사용하여 IP 주소를 룩-업하는 방법에 관한 것이다.
오늘날 인터넷(Internet) 사용자의 폭발적인 증가와 함께 멀티미디어(multimedia)와 같은 광대역을 필요로 하는 기반의 네트웍 트래픽(traffic)의 증가는 인터넷 서비스의 질을 현저히 떨어뜨리고 있으며, 이것을 해결하기 위한 시도가 광범위하게 이루어지고 있다.
양질의 인터넷 서비스를 위해서 차세대 라우터(router) 설계에서 고려해야 할 3가지 중요한 설계 논점은 링크 속도(link speed), 스위칭 속도(switching speed) 및 패킷 처리율(packet throughput)을 들 수 있다. 이들 중에 링크 속도와 스위칭 속도에 관하여는 현재 광 기술의 발달로 수∼수십 기가바이트 속도의 라우터 입력 및 출력을 전송할 수 있게 되었으므로, 거의 만족할 수 있는 상황이다. 하지만 패킷 처리율에 관해서는 많은 문제점이 있다.
특히 라우터에서 IP 주소를 룩-업하는 경우에 IP 주소의 체계의 특징으로 인해 LPM(Longest Prefix Matching) 문제에 부딪치게 된다. IP 주소 룩-업은 IP 패킷을 포워딩(forwarding) 처리하기 위해 IP 패킷의 헤더(header)에 포함된 목적지 주소를 보고 라우팅 테이블에서 해당되는 주소의 엔트리(entry)를 검색하여 다음 경로(next-hop)를 알아내는 것을 의미한다. IP 주소는 불특정한 길이의프리픽스(prefix)로 표현되며, 룩-업에 의한 라우팅 검색의 결과는 IP 패킷의 최종 목적지를 향하는 출력 링크, 즉 다음 경로값이 된다. 라우팅 검색은 라우팅 테이블에서 가장 긴 길이의 프리픽스가 일치하는 엔트리를 선택하는 LPM 방식을 기준으로 실행된다. 상기한 LPM 문제는 인터넷의 기하급수적 증가로 인해 발생되는 IP 어드레스의 고갈, 전 세계의 인터넷 라우팅 테이블 크기의 급속한 증가라는 문제점을 해결할 수 있는 대책의 하나로서 CIDR(Classless Inter-Domain Routing)라고 불리는 IP 주소 할당 방식이 널리 사용되면서 발생한 문제이다. CIDR은 1993년에 RFC(Request for Comments) 1517, 1518, 1519, 1520으로 공식적으로 문서화되었으며, IP 주소에 있어서 전통적인 클래스 A, 클래스 B, 클래스 C 네트워크의 개념을 제거하였다. 이러한 CIDR은 기존에 IP 주소를 클래스별로 할당함에 따라 초래되었던 클래스 C 주소 공간의 부족과 클래스 A,B의 주소 공간의 낭비를 줄여 IP 주소 할당 방식의 효율적인 운영이 가능하도록 하였다. 그러나 라우터가 유지해야 하는 라우팅 테이블의 엔트리가 크게 늘어나게 되어 결과적으로 IP 주소 룩-업 속도가 느려지게 되었다.
현재 초고속 라우터의 개발을 위해 제안되고 있는 IP 룩-업 기술은 크게 CAM(Content Addressable Memory)이나 캐싱(cashing), 라지-메모리(large-memory) 구조를 이용하는 하드웨어를 기반으로 하는 기술과, LC(Level Compressed) 트리(trie), 해싱(hashing), 멀티비트 트리(multibit trie)와 같은 소프트웨어를 기반으로 하는 기술로 나눌 수 있다. 소프트웨어에 의한 IP 주소 룩-업의 구현은 보다 유연하고 프로토콜의 수정으로 쉽게 적용될 수 있는 장점을 가진다. 하지만하드웨어에 의해 IP 룩-업 기능을 구현하는 것은 소프트웨어에 의한 구현으로는 얻지 못하는 고속의 패킷 처리 능력이 필요해서이다. 이에따라 오늘날 주된 라우터 벤더(vendor)들의 거의 모든 고속 라우터들은 하드웨어에 의해 IP 주소 룩-업을 행한다.
하드웨어에 의한 IP 룩-업 기능을 구현하기 위해 사용되는 CAM은 정확한 매치(match) 검색 동작을 하나의 클럭 주기에 실행한다. CAM은 입력되는 검색 키(search key)를 CAM 내의 모든 엔트리들, 즉 CAM 내에서 물리적으로 분할된 세그먼트들에 저장된 모든 요소들과 병렬로 비교하고, 그 결과로서 검색 키와 매칭된 요소가 저장된 물리적 세그먼트의 주소를 출력한다. 이때 매칭된 요소와 관련된 어떤 데이터가 있다면, 이 데이터 또한 출력된다. 이처럼 CAM은 검색 키를 CAM 내의 모든 엔트리들과 병렬로 비교하여 결과를 출력함으로써 신속한 검색이 가능하게 되는데, 통상적으로 10∼20㎱이내의 매우 짧은 잠재(latency) 시간이 소요된다.
한편 3원(ternary) CAM은 입력되는 검색 키를 여러 가지 길이의 저장 요소들과 비교가 가능한 좀 더 유연한 CAM의 한 종류이다. 이러한 3원 CAM에는 콘텐트 비트 스트링(content bit string)에 따르는 마스크 비트 스트링(mask bit string)이 존재하여 콘텐트 비트 스트링 모두가 검색 키와 비교될 필요는 없다. 또한 3원 CAM은 일반적으로 OC-192 또는 10기가비트 이더넷에 필요한 레이트(rate)의 몇배가 되는 검색 속도를 지원하며, 하나의 칩(chip)에서 129K 라우트까지 다룰 수 있다. 이에따라 3원 CAM은 LPM(Longest Prefix Matching)을 결정하기 위해 사용될 수 있으며, 3원 CAM의 속도는 패킷 포워딩에 적당하다.
상기한 3원 CAM을 사용하는 IP 주소 룩-업 장치의 개략적인 구조도를 도 1로서 보였다. 도 1에서 보는 바와 같이, 3원 CAM(100)에는 각각 프리픽스를 가지는 다수의 라우팅 엔트리(102)가 물리적으로 분할된 세그먼트들에 하나씩 저장된다. 이러한 라우팅 엔트리들(102)은 그들의 프리픽스 길이의 순서대로 물리적으로 낮은 주소부터 저장된다. 이러한 프리픽스들은 포워딩 처리할 IP 패킷의 헤더로부터 추출된 목적지 주소인 검색 키와 병렬로 비교되며, 이러한 비교에 의해 검색 키와 매칭되는 프리픽스를 가지는 라우팅 엔트리가 검색된다. 3원 CAM(100)은 이 검색의 결과로서, 검색 키와 매칭되는 프리픽스를 가지는 라우팅 엔트리의 매치 라인을 "1"로 셋트한다. 여기서 "1"은 논리 "1"을 의미하며, 이하의 설명에서도 동일하다. 이와 마찬가지로 이하의 설명에서 "0"은 논리 "0"을 의미한다. 3원 CAM(100)의 라우팅 엔트리들(102)의 매치 라인들에는 우선순위 인코더(priority encoder)(104)가 연결된다. 우선순위 인코더(104)는 검색 키와 매칭된 라우팅 엔트리들, 즉 셋트된 매치 라인에 해당하는 라우팅 엔트리가 적어도 하나 이상 있는 경우에는 매치된 라우팅 엔트리들 중에서 가장 낮은 주소, 즉 프리픽스 길이가 가장 긴 LPM 엔트리의 물리적인 주소를 찾아 출력하게 된다. 이처럼 우선순위 인코더(104)로부터 출력되는 LPM 엔트리의 물리적인 주소는 다음 경로값들을 저장하고 있는 메모리(도시하지 않았음)에 인가되며, 메모리에서는 이 주소에 저장되어 있는 다음 경로값이 출력됨으로써 한개의 IP 패킷에 대한 IP 주소 룩-업이 완료된다.
상기한 바와 같은 도 1의 IP 주소 룩-업 방식에서는 프리픽스들이 길이 순서대로 저장되기 때문에, 검색 결과에 의해 셋트되는 매치 라인들 중에 가장 낮은 주소가 자동적으로 LPM이 된다. 그러나 프리픽스 순서로 저장되어야 하는 것이 도 1과 같은 3원 CAM을 사용하는 방식의 가장 큰 단점이다. 만일 라우팅 테이블이 업데이트(update)될 때 새로운 프리픽스가 추가되어야 하는 경우, 3원 캠(100) 내에 길이 순서를 지키기 위해 새로운 프리픽스보다 짧은 길이의 프리픽스들은 모두 높은 주소로 옮겨 다시 저장해야 한다. 이처럼 프리픽스들을 재정렬하여 라우팅 테이블을 업데이트하는 것은 IP 주소 룩-업에 비해 많은 시간을 필요로 하며, 정렬을 하는 동안에는 라우팅 테이블이 오프-라인(off-line)으로 유지되어야 하므로 IP 주소 룩-업이 이루어지지 않는다.
이처럼 라우팅 테이블 업데이트에 따른 단점을 해결하는 방식으로서, 길이 i와 i+1의 프리픽스들의 집합간에 사용하지 않은 저장 공간들을 유지하는 것이다. 즉, 라우팅 엔트리는 프리픽스 길이에 의해 나뉘어지고, 빈 저장 공간은 새로운 라우팅 엔트리들의 추가를 용이하게 하기 위해 각 프리픽스 집합에 남아 있게 된다. 하지만 이러한 빈 저장 공간은 3원 CAM의 저장 공간의 낭비를 초래한다. 또한 빈 저장 공간이 다 채워지면, 라우팅 엔트리들은 재배치되어져야 하며, 이 동안에는 라우팅 테이블이 오프-라인으로 유지되어야 하므로 IP 주소 룩-업이 이루어지지 않는다. 최근 모바일(mobile) IP의 도입으로 라우터에서 잦은 라우팅 업데이트는 IP 주소 룩-업 아이들(idle) 시간을 증가시켜 IP 주소 룩-업 성능을 급격히 떨어뜨릴 것으로 예상된다.
한편 NEC 사의 고바야시 등에 의해 제안된 VLMP(Vertical logical operation with mask encoded prefix length) 방식은 프리픽스가 그 길이 순서대로 저장되어야 한다는 제약을 제거하였다. VLMP 방식은 Kobayashi, M., Murase, T., and Kuriyama, A.에 의해 "A Longest Prefix Match Search Engine for Multi-Gigabit IP Processing",IEEE International Conference on Communications, vol. 3, June 2000, pp.1360-1364에 게재되었다. 이 문헌에 개시된 VLMP 방식의 IP 주소 룩-업 장치의 개략적인 구조도를 도 2로서 보였고, 보다 상세한 구성을 나타내는 블록구성도를 도 3으로 보였다. 도 2 및 도 3은 상기한 문헌에 도 1(b) 및 도 5로서 각각 도시되어 있으며, 상술한 도 1은 상기한 문헌에 도 1(a)로서 도시되어 있다.
상기한 문헌을 참조하여 VLMP 방식의 IP 주소 룩-업에 관하여 살펴보면 다음과 같다. 먼저 도 2에서 보는 바와 같이, 3원 CAM(200)에는 각각 프리픽스를 가지는 다수의 라우팅 엔트리(202)가 물리적으로 분할된 세그먼트들에 하나씩 저장되는데, 도 1에서와 달리 라우팅 엔트리들(202)이 프리픽스 길이의 순서와 무관하게 저장된다. 3원 CAM(200)에서는 검색 키와 라우팅 엔트리들(202)의 프리픽스들과 병렬 비교에 의해 매칭되는 프리픽스를 검색하고, 매칭되는 라우팅 엔트리의 프리픽스 길이 정보를 출력한다. 이처럼 매칭되는 라우팅 엔트리가 적어도 하나 이상 있는 경우에는 상술한 바와 마찬가지로 매칭된 라우팅 엔트리들 중에서 LPM을 선택하여야 한다. 이를 위해 후술하는 도 3처럼 3원 CAM(200)의 출력을 정해진 논리 연산한 다음에 3원 CAM(200)으로 피드백(feedback)시켜 2차 검색을 하게 되는 VLMP 회로(204)에서는 3원 CAM(200)에서 검색에 의해 매칭된 라우팅 엔트리들 중에서 LPM을 만족하는 LPM 엔트리를 매칭된 프리픽스들의 길이정보를 이용하여 결정한다. 이와 같이 결정된 LPM 엔트리의 물리적인 주소는 인코더(206)에 의해 출력된다.
이제 도 3을 참조하면, 검색 키를 일시 저장하는 키 레지스터(300)의 출력에 다수의 라우팅 엔트리(302)가 연결되고, 라우팅 엔트리들(302)의 출력에는 인코더(206)가 연결되어 있다. 라우팅 엔트리들(302)은 한쌍의 동일한 길이의 비트열, 즉 n비트의 데이터 스트링 DS과 마스크 스트링 MS를 가지고 있다. 데이터 스트링 DS는 각 라우팅 엔트리에 해당하는 IP 주소의 프리픽스를 MSB(Most Significant Bit)부터 포함하며 그 나머지 비트는 "0"으로 채워지는 데이터 비트 스트링을 의미한다. 마스크 스트링 MS는 해당하는 IP 주소의 프리픽스 길이를 나타내는 마스크 비트 스트링으로서, 각각의 마스크 비트는 MSB로부터 프리픽스의 길이와 동일한 연속적인 "1"의 비트열로 채워지며 그 나머지는 "0"으로 채워진다. 예를 들어 프리픽스 "110"을 나타내기 위해서 데이터 스트링은 "11000000"로 되고 마스크 스트링은 "11100000"로 된다.
도 3에서 키 레지스터(300)에 저장되는 검색 키에 대한 LPM 검색은 다음과 같이 두 스테이지(stage)에 의해 실행된다.
첫번째 스테이지
1-1. 키 레지스터(300)에 저장된 검색 키 K는 엔트리들(302)에 연결된다.
1-2. 각 엔트리의 블록(304)에서 마스크 비교, R1:=(K & MS) XNOR (DS & MS)가 수행된다. 여기서 "&"는 비트별(bitwise) 논리곱(AND) 연산을 의미하고, "XNOR"은 비트별 배타적(exclusive) 부논리합(NOR) 연산을 의미한다.
1-3. 각 엔트리의 블록(304)에서 R1의 모든 비트들이 논리곱(AND) 연산되고, 그 결과가 매치 라인 1로 제공된다.
1-4. 만일 매치 라인 1이 "1"로 셋트되면, 셀렉터(S2)는 VLMP 라인에 마스크 스트링 MS를 내보낸다. 그렇치 않으면 셀렉터(S2)는 마스크 스트링 MS와 같은 길이의 "00...0"을 VLMP 라인으로 내보낸다.
1-5. VLMP 라인의 각 비트 위치에서 수직적(vertical) 비트별 논리적 논리합(OR) 연산, 즉 VLMP가 수행된다. 이 결과는 도 3에서 RV로 나타내어진다.
두번째 스테이지
2-1. RV는 엔트리들(302)에 연결된다.
2-2. 각 엔트리의 블록(306)에서 두개의 비트 스트링, 즉 RV와 마스크 스트링 MS가 정확히 비교된다. 즉 R2:=RV NOR MS가 수행된다.
2-3. 각 엔트리의 블록(306)에서 R2의 모든 비트들이 논리곱(AND) 연산되고, 그 결과가 매치 라인 2로 제공된다.
2-4. 만일 어떤 엔트리의 매치 라인 1과 매치 라인 2가 모두 "1"이면, 셀렉터(S1)는 LPM 라인에 "1"을 내보낸다. 그렇치 않으면 셀렉터(S1)는 LPM 라인에 "0"을 내보낸다.
상기한 바와 같은 두 스테이지에 따라 라우팅 엔트리들(302) 중에 LPM 엔트리로 결정된 라우팅 엔트리의 LPM 라인만 "1"로 셋트되게 된다. 이에따라 라우팅 엔트리들(302)의 LPM 라인들에 연결된 인코더(206)는 "1"로 셋트된 LPM 라인에 해당하는 라우팅 엔트리의 물리적인 주소를 찾아 출력하게 된다.
예를 들어 4개의 프리픽스 P1 = "110", P2 = "1001", P3 = "11011", P4 = "1101"이 라우팅 엔트리들(302)중에 첫번째 라우팅 엔트리부터 네번째 라우팅 엔트리에 순서대로 하나씩 저장되어 있는 상태에서 검색 키가 "11011111"로 입력되었다고 가정하면, 우선 프리픽스들과 병렬로 비교되어 첫번째, 세번째, 네번째 라우팅 엔트리의 프리픽스가 매칭될 것이다. 그러면 첫번째, 세번째, 네번째 라우팅 엔트리의 프리픽스에 대응하는 마스크 스트링들에 대한 VLMP가 수행된다. 상기한 예에서 마스크 스트링 P1_mask = "11000000", P3_mask = "11111000", P4_mask = "11110000"이며, VLMP 결과는 "11111000"이다. 이러한 VLMP 결과는 마스크 스트링들의 저장 순서에 상관없이 동일하다. 이에따라 프리픽스들이 길이 순서대로 정렬되어 있지 않아도 된다. 일단 VLMP의 결과가 얻어지면, VLMP의 결과와 완전히 매치되는 마스크 스트링을 포함하는 엔트리에 대해서 LPM이 발생했다는 것을 알 수 있다. 이어 VLMP의 결과 "11111000"에 대하여 2차로 P1_mask, P3_mask, P4_mask와 비교 검색하면, 3번째 엔트리가 매칭되므로 이 엔트리가 LPM 엔트리가 된다는 것을 알 수 있다.
상기한 바와 같이 VLMP 방식의 IP 주소 룩-업에 따르면, 프리픽스들이 길이 순서대로 정렬되어 있지 않더라도 LPM 엔트리를 찾아 낼 수 있다. 이에따라 라우팅 테이블이 업데이트될 때 새로운 프리픽스가 추가되어야 하는 경우에도 프리픽스들을 재정렬할 필요가 없으므로, 신속히 업데이트가 이루어지게 된다. 그러나 VLMP가 추가되고 VLMP 결과를 검색 키로서 피드백시켜야만 하며, 이에따른 부가적인 회로가 추가되어야 한다. 그러므로 VLMP 방식의 IP 주소 룩-업 장치는 이러한 부가적인 회로를 포함한 전용의 LSI(Large Scale Integration)로 제작된다.
상술한 바와 같이 현재까지 제안된 IP 주소 룩-업 방식들은 라우팅 테이블의 프리픽스들을 길이 순서대로 정렬해야 한다는 단점이 있거나, 순서적으로 정렬하지 않더라도 피드백 검색을 위한 회로가 3원 CAM에 추가되어야 한다.
따라서 본 발명의 목적은 라우팅 테이블의 프리픽스들을 길이 순서대로 정렬할 필요나 피드백 검색을 할 필요가 없이 IP 주소를 룩-업할 수 있는 IP 주소 룩-업 방법을 제공함에 있다.
본 발명의 다른 목적은 라우팅 테이블을 신속히 갱신할 수 있도록 하면서도 범용의 3원 CAM을 사용하여 IP 주소를 룩-업할 수 있는 IP 주소 룩-업 방법을 제공함에 있다.
도 1은 3원 CAM을 사용하는 IP 주소 룩-업 장치의 개략적인 구조도,
도 2는 VLMP 방식의 IP 주소 룩-업 장치의 개략적인 구조도,
도 3은 VLMP 방식의 IP 주소 룩-업 장치의 블록구성도,
도 4는 본 발명의 실시예에 따른 3원 CAM을 사용하는 IP 주소 룩-업 장치의 개략적인 구조도,
도 5는 본 발명의 실시예에 따른 3원 CAM을 사용하는 IP 주소 룩-업 장치의 블록구성도,
도 6은 본 발명의 실시예에 따른 우선순위 인코더의 처리 흐름도,
도 7a 내지 도 7d는 본 발명의 실시예에 따른 우선순위 인코더의 LPM 검색 동작 예시도,
도 8은 본 발명의 실시예에 따른 3원 CAM을 사용하는 IP 주소 룩-업 장치의 시뮬레이션 결과 예시도.
상술한 목적을 달성하기 위한 본 발명의 방법은, 3원 CAM에서 적어도 하나 이상의 매치 라인이 셋트되는 경우 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들의 프리픽스 길이를 비교하는 과정과, 프리픽스 길이가 가장 긴 마스크 스트링에 해당하는 라우팅 엔트리를 LPM(Longest Prefix Matching) 엔트리로서 결정하는 과정을 구비함을 특징으로 한다.
이하 본 발명의 바람직한 실시예들을 첨부한 도면을 참조하여 상세히 설명한다. 하기 설명에서 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대하여는 상세한 설명을 생략한다.
도 4는 본 발명의 실시예에 따른 3원 CAM을 사용하는 IP 주소 룩-업 장치의 개략적인 구조도를 보인 것이다. 본 발명의 IP 주소 룩-업 장치는 통상적인 3원 CAM(400)과, 3원 CAM(400)의 출력에 연결되는 우선순위 인코더(404)로 구성한다. 3원 CAM(400)에는 각각 프리픽스를 가지는 다수의 라우팅 엔트리(402)가 물리적으로 분할된 세그먼트들에 하나씩 저장되는데, 도 4에서 보는 바와 같이 프리픽스 길이의 순서와 무관하게 저장된다. 3원 CAM(400)에서는 검색 키와 라우팅 엔트리들(402)의 프리픽스들과 병렬 비교에 의해 매칭되는 프리픽스를 검색하고, 매칭되는 라우팅 엔트리의 매치 라인을 셋트시킴과 아울러 매칭되는 라우팅 엔트리의 마스크 스트링을 우선순위 인코더(404)로 출력한다. 그러면 우선순위 인코더(404)는 3원 CAM(400)에서 적어도 하나 이상의 매치 라인이 셋트되는 경우, 즉 라우팅 엔트리들(402)의 매치 라인들 중에 하나 이상 셋트되는 경우에 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들의 프리픽스 길이를 비교하여 가장 긴 마스크 스트링에 해당하는 라우팅 엔트리를 LPM 엔트리로서 결정하고, LPM 엔트리의 물리적인 주소를 LPM 엔트리의 매치 라인에 근거하여 출력한다.
상기한 바와 같은 본 발명의 실시예에 따른 IP 주소 룩-업 장치를 보인 도 5의 블록구성도를 참조하면, 3원 CAM(400)은 검색 키를 일시 저장하는 키 레지스터(500)의 출력에 다수의 라우팅 엔트리(402)가 연결되며, 이러한 3원 CAM(400)의 라우팅 엔트리들(402)의 출력에는 우선순위 인코더(404)가 연결되어 있다. 라우팅 엔트리들(402)은 전술한 도 3의 라우팅 엔트리들(302)과 마찬가지로 한쌍의 동일한 길이의 비트열, 즉 n비트의 데이터 스트링 DS과 마스크 스트링 MS를가지고 있다. 키 레지스터(500)의 검색 키가 라우팅 엔트리들(402)에 연결되고, 각 라우팅 엔트리의 블록(502)에서는 전술한 도 3의 블록(304)에서와 마찬가지로 R1:=(K & MS) XNOR (DS & MS)가 수행된다. 그리고 각 엔트리의 블록(502)에서 R1의 모든 비트들이 논리곱(AND) 연산되고, 그 결과가 매치 라인으로 제공된다. 각 엔트리에서 매치 라인의 셋트 여부에 따라 마스크 스트링 MS와 동일한 길이로 연속되는 "00...0" 또는 마스크 스트링 MS를 선택하여 우선순위 인코더(404)로 출력하는 셀렉터(506)는 매치 라인이 "1"로 셋트되면 마스크 스트링 MS를 내보내고, 그렇치 않으면 "0...0"을 내보낸다.
상기한 바와 같이 3원 CAM(400)에서 적어도 하나 이상의 매치 라인이 셋트되면, 우선순위 인코더(404)는 셋트된 매치 라인에 대응되게 3원 CAM(400)으로부터 출력되는 마스크 스트링들의 프리픽스 길이를 비교하여 가장 긴 마스크 스트링에 해당하는 라우팅 엔트리를 LPM 엔트리로서 결정한다. 그리고 우선순위 인코더(404)는 이와 같이 결정된 LPM 엔트리의 물리적인 주소를 전술한 도 1에서와 마찬가지로 LPM 엔트리의 매치 라인에 근거하여 출력한다. 이때 우선순위 인코더(404)에서는 마스크 스트링들의 길이를 MSB(Most Significant Bit)부터 비교 검색하여 LPM 엔트리를 결정한다. 이처럼 MSB부터 비교하는 것은 전술한 바와 같이 마스크 스트링이 MSB로부터 프리픽스의 길이와 동일한 연속적인 "1"의 비트열로 채워지며 그 나머지는 모두 "0"으로 채워지기 때문이다.
상기한 바와 같이 우선순위 인코더(404)가 마스크 스트링들의 길이를 비교하여 LPM 엔트리를 결정하고 그의 물리적인 주소를 출력하는 처리 흐름도를 도 6의(600)∼(610)단계로 보였으며, 그의 LPM 검색 동작 예시도를 비교할 마스크 스트링이 3개인 경우의 예를 들어 도 7a 내지 도 7d로서 보였다. 만일 3원 CAM(400)에서 적어도 하나 이상의 매치 라인이 셋트되면, 우선순위 인코더(404)는 (600)단계에서 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들에 대하여 도 7a처럼 MSB와 LSB에 각각 상위 포인터와 하위 포인터를 지정한다. 그리고 (602)단계에서 도 7b처럼 상위 포인터와 하위 포인터 사이의 중간 위치에 체크 포인터를 지정한다. 다음에 (604)단계에서 마스크 스트링들 중에 체크 포인터가 가리키는 비트값이 프리픽스임을 나타내는 비트, 즉 "1"인 비트의 개수가 한개인지 여부를 확인한다. 만일 "1"인 비트가 둘 이상이면 (606)단계에서 도 7c처럼 하위 포인터를 체크 포인터의 위치로 옮겨 지정한 후, 상기 (602)단계부터 다시 처리한다. 상기 (602)∼(604)단계를 다시 처리한 결과, 여전히 "1"인 비트가 둘 이상이면 (606)단계에서 다시 도 7d처럼 하위 포인터를 체크 포인터의 위치로 옮겨 지정한 후, 상기 (602)단계부터 다시 처리한다. 이렇게 하여 도 7d처럼 "1"인 비트의 개수가 하나가 되면, (608)단계에서 그때의 체크 포인터가 가리키는 비트값이 "1"인 마스크 스트링에 해당하는 라우팅 엔트리를 LPM 엔트리로서 결정한다. 이후 (610)단계에서 이와 같이 결정된 LPM 엔트리의 물리적인 주소를 전술한 도 1에서와 마찬가지로 LPM 엔트리의 매치 라인에 근거하여 출력한다.
따라서 본 발명은 VLMP 방식과 마찬가지로 프리픽스들이 길이 순서에 관계없이 3원 CAM에 저장되면서도 VLMP 방식과 달리 피드백 검색이 필요없게 된다. 이에따라 라우팅 테이블을 신속히 갱신할 수 있도록 하면서도, 우선순위 인코더만 변경하면 되므로 VLMP 방식과 달리 전용의 LSI가 아닌 범용의 3원 CAM을 사용하여 IP 주소를 룩-업할 수 있게 된다.
참고적으로 상기한 바와 같은 우선순위 인코더(404)를 VHDL(Very high speed Hardware Description Language) 코드로 작성하여 시뮬레이션을 수행한 결과, 도 8에 보인 바와 같이 하나의 IP 패킷을 룩-업 처리하는데 40㎱ 정도의 시간이 걸림을 확인하였다. 도 8은 프리픽스 길이가 27비트인 경우 5개의 마스크 스트링들 MS0∼MS4중에 두번째 마스크 스트링 MS1이 LPM 엔트리에 대응하는 것으로 결정되어 두번째 라우팅 엔트리의 물리적 주소 ADDRESS가 "00010"로 출력되는 것을 보인다. 상기한 40㎱에 더하여 3원 CAM에서 병렬 검색을 하여 결과가 나오는 시간 10㎱까지 고려한다면 총 50㎱가 걸리게 된다. 이는 초당 2천 5백만회 정도의 검색을 가능하게 한다. 그러므로 10Gbps급의 입,출력을 가지고 초당 1000번 정도의 라우터 테이블 업데이트가 필요한 IP 백본 라우터에 적용될 수 있음은 물론이고, 현재 최고 속도로 개발중인 테라비트(Terabit) 라우터에서 사용 가능한 포트당 OC-192의 9.6Gbps의 포워딩 속도를 지원할 수 있다.
한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 특히 본 발명의 실시예에서는 하위 포인터를 체크 포인터의 위치로 옮겨가면서 마스크 스트링들의 길이를 비교하여 LPM 엔트리를 찾는 예를 들었으나, 이와 다른 방식으로도 마스크 스트링들의 길이를 비교 검색할 수도 있다. 따라서 발명의 범위는 설명된 실시예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위의 균등한 것에 의해정하여져야 한다.
상술한 바와 같이 본 발명은 VLMP 방식과 마찬가지로 프리픽스들이 길이 순서에 관계없이 3원 CAM에 저장되면서도 VLMP 방식과 달리 피드백 검색이 필요없게 됨으로써 라우팅 테이블을 신속히 갱신할 수 있도록 하면서도 범용의 3원 CAM을 사용하여 IP 주소를 룩-업할 수 있는 이점이 있다.
Claims (2)
- IP(Internet Protocol) 주소의 프리픽스를 포함하는 데이터 스트링과 상기 프리픽스의 길이를 나타내는 마스크 스트링으로 이루어지는 쌍을 각각 포함하는 라우팅 엔트리들을 가지며, 포워딩 처리할 IP 패킷의 목적지 주소인 검색 키와 상기 라우팅 엔트리들을 비교하여 매칭되는 라우팅 엔트리의 매치 라인을 셋트함과 아울러 그의 마스크 스트링을 출력하는 3원 CAM(Content Addressable Memory)을 사용하여 포워딩 처리할 IP 패킷의 IP 주소를 룩-업하는 방법에 있어서,상기 3원 CAM에서 적어도 하나 이상의 매치 라인이 셋트되는 경우 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들의 프리픽스 길이를 비교하는 과정과,상기 프리픽스 길이가 가장 긴 마스크 스트링에 해당하는 라우팅 엔트리를 LPM(Longest Prefix Matching) 엔트리로서 결정하는 과정을 구비함을 특징으로 하는 IP 주소 룩-업 방법.
- IP(Internet Protocol) 주소의 프리픽스를 포함하는 데이터 스트링과 상기 프리픽스의 길이를 나타내는 마스크 스트링으로 이루어지는 쌍을 각각 포함하는 라우팅 엔트리들을 가지며, 포워딩 처리할 IP 패킷의 목적지 주소인 검색 키와 상기 라우팅 엔트리들을 비교하여 매칭되는 라우팅 엔트리의 매치 라인을 셋트함과 아울러 그의 마스크 스트링을 출력하는 3원 CAM(Content Addressable Memory)을 사용하여 포워딩 처리할 IP 패킷의 IP 주소를 룩-업하는 방법에 있어서,상기 3원 CAM에서 적어도 하나 이상의 매치 라인이 셋트되는 경우 셋트된 매치 라인들에 대응되게 출력되는 마스크 스트링들에 대하여 MSB와 LSB에 각각 상위 포인터와 하위 포인터를 지정하는 과정과,상기 상위 포인터와 상기 하위 포인터 사이의 중간 위치의 비트에 체크 포인터를 지정하는 과정과,상기 마스크 스트링들 중에 상기 체크 포인터가 가리키는 비트값이 프리픽스 비트임을 나타내는 비트의 개수를 확인하는 과정과,상기 프리픽스임을 나타내는 비트의 개수가 하나이면 상기 체크 포인터가 가리키는 비트값이 상기 프리픽스 비트임을 나타내는 값인 마스크 스트링에 해당하는 라우팅 엔트리를 LPM(Longest Prefix Matching) 엔트리로서 결정하고, 둘 이상이면 상기 하위 포인터를 상기 체크 포인터의 위치로 옮겨 지정한 후 상기 체크 포인터 지정과정으로 진행하는 과정을 구비함을 특징으로 하는 IP 주소 룩-업 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0037911A KR100460188B1 (ko) | 2002-07-02 | 2002-07-02 | 인터넷 프로토콜 주소 룩-업 방법 |
US10/462,778 US7424468B2 (en) | 2002-07-02 | 2003-06-17 | Internet protocol address look-up device |
US10/462,739 US7079542B2 (en) | 2002-07-02 | 2003-06-17 | Internet protocol address look-up method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0037911A KR100460188B1 (ko) | 2002-07-02 | 2002-07-02 | 인터넷 프로토콜 주소 룩-업 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040003258A true KR20040003258A (ko) | 2004-01-13 |
KR100460188B1 KR100460188B1 (ko) | 2004-12-08 |
Family
ID=37314281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0037911A KR100460188B1 (ko) | 2002-07-02 | 2002-07-02 | 인터넷 프로토콜 주소 룩-업 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100460188B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100459542B1 (ko) * | 2002-07-02 | 2004-12-03 | 삼성전자주식회사 | 인터넷 프로토콜 주소 룩-업 장치 |
KR100745693B1 (ko) * | 2006-09-29 | 2007-08-03 | 한국전자통신연구원 | Tcam 테이블 관리 방법 |
KR100814077B1 (ko) * | 2006-10-09 | 2008-03-14 | 이화여자대학교 산학협력단 | 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237061B1 (en) * | 1999-01-05 | 2001-05-22 | Netlogic Microsystems, Inc. | Method for longest prefix matching in a content addressable memory |
US6460112B1 (en) * | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
KR100378599B1 (ko) * | 2001-04-02 | 2003-04-03 | 한국전자통신연구원 | 주소 메모리 블록의 간섭 인덱싱에 기반한 라우팅 테이블검색 방법 |
KR100413528B1 (ko) * | 2001-11-30 | 2004-01-03 | 한국전자통신연구원 | Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 |
KR100459542B1 (ko) * | 2002-07-02 | 2004-12-03 | 삼성전자주식회사 | 인터넷 프로토콜 주소 룩-업 장치 |
-
2002
- 2002-07-02 KR KR10-2002-0037911A patent/KR100460188B1/ko not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100459542B1 (ko) * | 2002-07-02 | 2004-12-03 | 삼성전자주식회사 | 인터넷 프로토콜 주소 룩-업 장치 |
KR100745693B1 (ko) * | 2006-09-29 | 2007-08-03 | 한국전자통신연구원 | Tcam 테이블 관리 방법 |
US7774538B2 (en) | 2006-09-29 | 2010-08-10 | Electronics And Telecommunications Research Institute | Method for ternary contents address memory table management |
KR100814077B1 (ko) * | 2006-10-09 | 2008-03-14 | 이화여자대학교 산학협력단 | 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR100460188B1 (ko) | 2004-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7424468B2 (en) | Internet protocol address look-up device | |
US7031320B2 (en) | Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables | |
US7315547B2 (en) | Packet forwarding device | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US5920886A (en) | Accelerated hierarchical address filtering and translation using binary and ternary CAMs | |
EP1358739B1 (en) | Method and apparatus for routing table management | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
US7555594B2 (en) | Range representation in a content addressable memory (CAM) using an improved encoding scheme | |
US7433871B2 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
US6665297B1 (en) | Network routing table | |
US7443841B2 (en) | Longest prefix matching (LPM) using a fixed comparison hash table | |
US20040254909A1 (en) | Programming routes and access control lists in comparison tree data structures and their use such as in performing lookup operations | |
US6691171B1 (en) | Method and system for address lookup in data communication | |
KR100512949B1 (ko) | 필드레벨 트리를 이용한 패킷분류장치 및 방법 | |
US6574701B2 (en) | Technique for updating a content addressable memory | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
US6532516B1 (en) | Technique for updating a content addressable memory | |
KR100459542B1 (ko) | 인터넷 프로토콜 주소 룩-업 장치 | |
KR100460188B1 (ko) | 인터넷 프로토콜 주소 룩-업 방법 | |
US20090210382A1 (en) | Method for priority search using a tcam | |
Zhen-Xing et al. | High-performance IPv4/IPv6 dual-stack routing lookup | |
Wang et al. | Routing interval: a new concept for IP lookups | |
KR20050043035A (ko) | 복수의 해슁 함수를 이용한 ip 어드레스 검색 방법 및하드웨어 구조 | |
Yang et al. | Hardware Based Routing Lookup for IPv4 |
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: 20121030 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20131030 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20141030 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |