KR100612256B1 - 터너리 내용 주소화 메모리 관리 장치 및 그 방법 - Google Patents
터너리 내용 주소화 메모리 관리 장치 및 그 방법 Download PDFInfo
- Publication number
- KR100612256B1 KR100612256B1 KR1020050003887A KR20050003887A KR100612256B1 KR 100612256 B1 KR100612256 B1 KR 100612256B1 KR 1020050003887 A KR1020050003887 A KR 1020050003887A KR 20050003887 A KR20050003887 A KR 20050003887A KR 100612256 B1 KR100612256 B1 KR 100612256B1
- Authority
- KR
- South Korea
- Prior art keywords
- sequence
- entry
- ternary
- ternary cam
- cam
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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
Landscapes
- Engineering & Computer Science (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
본 발명의 일 측면에 따른 터너리 내용 주소화 메모리 관리 방법은, 시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하는 단계; 상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하는 단계; 및 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 해당 시퀀스 ID 영역을 확장하고 새로운 엔트리를 추가하여, 상기 터너리 CAM을 제어하는 단계를 포함한다.
Description
도 1은 종래 기술에 따른 검색키와 마스크를 이용한 TCAM의 엔트리 정보 검색 메커니즘을 나타낸 도면.
도 2는 본 발명에 따른 TCAM 테이블 관리 장치의 구성을 나타낸 도면.
도 3은 본 발명에 따른 시퀀스 ID에 따라 구분되는 TCAM의 구조를 나타낸 도면.
도 4는 본 발명에 따른 TCAM 테이블 관리 방법에 의해 TCAM 내에 엔트리를 추가하는 경우의 동작 흐름을 나타낸 도면.
도 5는 확장된 엔트리들이 할당된 시퀀스 ID 영역을 벗어나는 경우의 본 발명에 따른 TCAM 테이블 관리 방법을 나타낸 도면.
도 6은 본 발명에 따른 TCAM 테이블 관리 방법에 의해 TCAM 내의 엔트리를 삭제하는 경우의 동작 흐름을 나타낸 도면.
*도면의 주요 부분에 대한 부호의 설명*
200 : TCAM(Ternary CAM) 210 : TCAM 하드웨어 구성 모듈
220 : TCAM 엔트리 관리 모듈 230 : TCAM 엔트리 룩업 모듈
본 발명은 터너리 내용 주소화 메모리 관리 장치 및 그 방법에 관한 것으로, 보다 구체적으로는 하드웨어를 이용한 룩업에 이용할 수 있도록 터너리 내용 주소화 메모리를 이용해 패킷 분류화 또는 패킷 필터링을 구현하도록 하는 터너리 내용 주소화 메모리 관리 장치 및 그 방법에 관한 것이다.
인터넷 네트워크 환경 하에서 라우팅 룩업(Lookup) 동작은 네트워크 프로세서나 라우터의 성능 상에서 주요한 병목현상이 되어왔다. 급격하게 증가하는 인터넷 사용자의 증가로 기존의 계층적 주소(Classful Address) 체계는 CIDR(Classless InterDomain Routing) 체계로 대체되었다.
CIDR 체계는 IP 어드레스 관리 측면에서는 효율적인 면이 있으나, LPM(Longest Prefix Matching)으로 인하여 라우팅 룩업이 점점 더 어렵고 복잡하게 되었다. LPM으로 인해 야기된 문제는 i) 라우팅 테이블 사이즈의 확대, ii) 인터넷 트래픽의 증가, iii) 보다 고속의 네트워크 링크 요구, 그리고 iv) 128 비트 IPv6로의 이전의 어려움 등이다. 이러한 CIDR 주소 체계로 인한 라우팅 룩업의 어려움을 해결하기 위하여 소프트웨어적인 방법과 하드웨어적인 방법이 연구되어 왔다.
소프트웨어적인 방법은 대부분 압축 알고리즘을 사용하여 메모리 사용량을 줄이고, 이를 캐쉬나 SRAM과 같은 빠른 메모리를 사용하여 라우팅 룩업을 향상시키는 방법을 주로 사용하고 있다. 소프트웨어적인 방법은 마이크로프로세서의 성능 향상과 캐쉬의 향상된 히트(Hit)율 증가, 그리고 더욱 빠른 FSB(Front Side Bus)의 직접적인 혜택을 얻을 수 있다. 그러나, 이러한 소프트웨어적인 방법은 라우팅 업데이트시 전체를 재구성해야 하는 알고리즘이 많으며, 또한 평균적인 검색 효율은 뛰어나더라도 트리 구조가 밀집해 있을 경우 검색 효율이 떨어져 최악의 경우, 32번의 메모리 액세스가 요구된다.
하드웨어적인 방법으로는 크게 메모리를 이용하여 선형적으로 IP 어드레스를 메모리로 매핑하는 방법과 압축 알고리즘을 하드웨어로 구현한 방법 등이 있다. 하드웨어적인 방법은 파이프라이닝으로 인한 라우팅 속도 향상이 가능하고, 마이크로프로세서로 구현시 OS를 포팅할 때 연산이나 인스트럭션으로 인한 라우팅 속도가 떨어지지 않는 장점을 가지고 있다.
최근 하드웨어 구현으로 각광 받는 룩업 방식은 CAM(Content Addressable Memory)을 이용한 룩업 방식이다. CAM은 데이터를 이용하여 그 데이터와 관련된 값이 위치해 있는 주소를 검색하는 기능을 가지고 있으며, 각 셀(Cell)마다 비교를 위한 XOR 연산을 할 수 있는 특성을 가진 장치로서, 기존의 RAM(Random Access Memory) 구조와는 달리 외부의 정보를 저장된 내용과 비교함으로써 읽고 쓰는 연관 기억장치(Associative Memory) 구조로 되어 있다. CAM은 이러한 특성으로 인해 네트워크 라우터에서의 검색 엔진이나 이미지 프로세서 또는 신경망의 구현에 이용되 고 있다.
CAM은 1 클럭에 곧바로 해당 포트 등에 대한 정보를 알 수 있다. 특히 0과 1 이외에 무정의 값(Don't care) 정보의 저장이 가능한 TCAM(Ternary CAM)을 이용하면 LPM까지 비교적 쉽게 구현이 가능하다. 패킷 구분을 위해서는 목적(Destination) IP 주소 뿐 아니라, 원천(source) IP 주소, 원천/목적 포트 번호, 프로토콜 필드(5 튜플) 등까지도 볼 필요가 있는데, 이를 미리 설정된 다양한 패킷 필터링 규칙들과 비교하는 작업을 매 패킷마다 하여야 되기 때문에 IP 주소 룩업보다 복잡한 작업이 된다.
TCAM은 10 ~ 20 나노 초(nanoseconds)의 매우 짧은 지연도(latency) 내에 찾고자 하는 키와 CAM 안의 모든 엔트리들과 병렬적으로 비교를 함으로써 룩업 결과 검색을 가능하게 한다. TCAM에는 내용 비트 스트링(Content Bit String)에 따르는 마스크 비트 스트링(Mask Bit String)이 존재하여 내용 비트 스트링 모두가 탐색 키(Search Key)와 비교될 필요는 없으며, TCAM은 TCAM 내의 모든 엔트리 중에서 탐색키와 가장 먼저 매칭된 엔트리 정보를 검색 결과로 알려준다.
도 1은 종래 기술에 따른 검색키와 마스크를 이용한 TCAM의 엔트리 정보 검색 메커니즘을 나타낸다.
TCAM은 우선순위가 낮아지는 순서로 룰을 저장해 두고, 주어진 탐색키를 저장된 모든 엔트리들과 동시에 비교하여 가장 먼저 매칭되는 엔트리를 찾는다. 이 과정에서 TCAM은 내용 비트 스트링(Content Bit String)에 따르는 마스크 비트 스 트링(Mask Bit String)을 가지므로 내용 비트 스트링 모두가 탐색 키(Search Key)와 비교될 필요가 없음을 이미 살펴본 바이다. 즉, 도 1의 마스크 부분 중 무정의 값(Don't Care)을 가지는 부분에 대해서는 탐색시 고려할 필요가 없게 된다. 탐색 키 중 마스크의 무정의 값 부분을 제외한 부분에 대해서만 내용 비트 스트링과 비교한 결과 값이 도 1의 데이터 어레이(Data Array) 부분의 비교 결과(Compare)로 나타나게 된다.
살펴본 바와 같은 TCAM 구조에서는 최근 이슈가 되고 있는 패킷 분류(classification)이나 패킷 필터링(filtering)같은 기능을 구현할 수 없다. 패킷 분류를 위해서는 저장된 5-튜플 정보를 매 패킷마다 비교해야 하는 작업을 거쳐야 하는데, TCAM의 특성상 최초로 일치하는 엔트리 정보를 알려준다. 따라서 패킷 분류나 필터링을 위해서는 새로운 TCAM 관리 방법에 대한 필요성이 대두되고 있다.
본 발명은 상기의 문제점을 해결하기 위해, 터너리 내용 주소화 메모리를 패킷 우선순위에 따른 시퀀스 ID를 이용하여 구분하고 구분된 시퀀스 ID를 이용해 패킷 분류 또는 패킷 필터링을 구현할 수 있도록 터너리 내용 주소화 메모리를 분할, 생성 및 삭제하여 관리하는 터너리 내용 주소화 메모리 관리 장치 및 방법을 제공함을 그 목적으로 한다.
본 발명의 일 측면에 따른 터너리 내용 주소화 메모리 관리 방법은, 시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하는 단계; 상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하는 단계; 및 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 해당 시퀀스 ID 영역을 확장하고 새로운 엔트리를 추가하여, 상기 터너리 CAM을 제어하는 단계를 포함한다.
상기 개별적인 시퀀스 ID로 분할된 영역 내의 모든 엔트리는 동일한 우선순위를 가지는 것을 특징으로 한다.
상기 분할 단계에서, 상기 터너리 CAM의 초기화 시 분할되는 각각의 시퀀스 ID별 보유 엔트리 수가 모든 시퀀스 ID에 대해 동일하며, 상기 패킷 분류 룰에 의한 시퀀스 ID의 결정은, 하나의 패킷 분류 룰에 하나의 시퀀스 ID가 일대 일로 대응되도록 매칭하는 것을 특징으로 한다.
또한, 상기 분할 단계에서 상기 시퀀스 ID의 숫자가 작을수록 상기 터너리 CAM의 상단에 위치하는 것을 특징으로 하며, 상기 시퀀스 ID의 수는 상기 터너리 CAM의 용량에 따라 제한된다.
상기 터너리 CAM 제어 단계는, 상기 터너리 CAM의 특정 시퀀스 ID에 새로운 엔트리가 추가되는 경우, 상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 초기 분할시 부여된 시퀀스 ID 범위 내인지 확인하는 단계; 상기 확인 결과 입력된 시퀀스 ID가 상기 범위 내인 경우, 상기 입 력 시퀀스 ID 내에 상기 새로운 엔트리를 추가할 빈 공간이 존재하는지 확인하는 단계; 및 상기 확인 결과, 빈 공간이 없는 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID 내의 빈 엔트리 공간을 활용하여, 상기 새로운 엔트리를 추가하고자 했던 상기 입력 시퀀스 ID의 엔트리로 추가하는 단계를 한다.
상기 엔트리 추가 단계는, 상기 입력 시퀀스 ID가 상기 보상 시퀀스 ID보다 큰 경우, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 것을 특징으로 한다.
상기 입력 시퀀스 ID가 상기 보상 시퀀스 ID보다 작은 경우에 있어서 상기 엔트리 추가 단계는, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 사이 영역에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 것을 특징으로 한다.
상기 터너리 CAM 제어 단계는 한편, 시스템 관리자에 의해 삭제되는 룰이 발생되는 경우에는 삭제되는 룰에 해당하는 시퀀스 ID 영역 내의 모든 엔트리를 삭제하는 것을 특징으로 한다.
상기 시퀀스 ID 영역 내의 엔트리 삭제는, 상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 분할 단계에서 부여된 범위 내인지 확인하는 단계; 와 상기 입력된 시퀀스 ID가 적정 범위 내인 경우, 상기 시퀀스 ID의 시작 엔트리의 위치를 확인하고 해당 엔트리를 삭제하고, 상기 시퀀스 ID 내에 존재하는 모든 엔트리가 다 삭제될 때까지 엔트리의 삭제를 반복하는 단계를 포함한다.
본 발명의 다른 측면에 따른 터너리 내용 주소화 메모리 관리 방법은, 시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하는 단계; 상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하는 단계; 및 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단 또는 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 단계를 포함한다.
본 발명의 또 다른 측면에 따른 터너리 내용 주소화 메모리 관리 장치는, 시 스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하여 상기 터너리 CAM을 초기화하는 TCAM 하드웨어 구성 모듈; 과 상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하고, 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 해당 시퀀스 ID 영역을 확장하고 새로운 엔트리를 추가하여, 상기 터너리 CAM을 제어하는 TCAM 엔트리 관리 모듈을 포함한다.
상기 TCAM 하드웨어 구성 모듈은, 상기 개별적인 시퀀스 ID로 분할된 영역 내의 모든 엔트리는 동일한 우선순위를 가지는 것을 특징으로 하며, 상기 패킷 분류 룰에 의한 시퀀스 ID의 결정은, 하나의 패킷 분류 룰에 하나의 시퀀스 ID가 일대 일로 대응되도록 매칭하는 것을 특징으로 한다.
상기 TCAM 엔트리 관리 모듈은, 상기 터너리 CAM의 특정 시퀀스 ID에 새로운 엔트리가 추가되는 경우, 상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 초기 분할시 부여된 시퀀스 ID 범위 내인지, 상기 입력 시퀀스 ID 내에 상기 새로운 엔트리를 추가할 빈 공간이 존재하는지 확인하고, 상기 확인 결과, 빈 공간이 없는 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID 내의 빈 엔트리 공간을 활용하여, 상기 새로운 엔트리를 추가하고자 했던 상기 입력 시퀀스 ID의 엔트리로 추가하는 것을 특징으로 한다.
상기 TCAM 엔트리 관리 모듈은 또한, 시스템 관리자에 의해 삭제되는 룰이 발생되는 경우, 상기 삭제되는 룰에 해당하는 시퀀스 ID 영역 내의 모든 엔트리를 삭제하는 것을 특징으로 한다.
상기 시퀀스 ID 내의 엔트리 삭제는, 상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 분할 단계에서 부여된 범위 내인지 확인하고, 상기 입력된 시퀀스 ID가 적정 범위 내인 경우, 상기 시퀀스 ID의 시작 엔트리의 위치를 확인하고 해당 엔트리를 삭제하고, 상기 시퀀스 ID 내에 존재하는 모든 엔트리가 다 삭제될 때까지 엔트리의 삭제를 반복하는 것을 특징으로 한다.
한편, 상기 터너리 내용 주소화 메모리 관리 장치는, 검색키를 생성하여 상기 터너리 CAM에 제공하고, 그 결과로 터너리 CAM으로부터 수신한 검색 결과 데이터를 이용해 룩업을 수행하는 TCAM 엔트리 룩업 모듈을 더 포함할 수 있다.
본 발명의 또 다른 측면에 따른 터너리 내용 주소화 메모리 관리 장치는, 시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하여 상기 터너리 CAM을 초기화하는 TCAM 하드웨어 구성 모듈; 과 상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하고, 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는, 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단 또는 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 TCAM 엔트리 관리 모듈을 포함한다.
이하, 본 발명에 따른 바람직한 실시예를 도면을 살펴보면서 구체적으로 설명하기로 한다.
도 2는 본 발명에 따른 TCAM 테이블 관리 장치의 구성을 나타내고 있다.
TCAM 관리 장치는 관리 대상이 되는 TCAM(200)을 중심으로 TCAM을 관리하는 TCAM 하드웨어 구성 모듈(210), TCAM 엔트리 관리 모듈(220), TCAM 엔트리 룩업 모듈(230)로 구성된다.
TCAM 하드웨어구성(HW Configuration) 모듈(210)에서는 TCAM(200)의 초기화를 담당한다. 초기화 시, TCAM의 내부 데이터베이스를 정해지는 시퀀스 ID 개수만큼의 영역으로 구분한다.
TCAM 엔트리 관리 모듈(220)은 단순한 메모리인 TCAM(200)을 대상으로 하여, TCAM 엔트리를 생성하여 추가하거나 삭제하는 역할을 담당한다. TCAM 엔트리 관리 모듈(220)은 이를 위해 TCAM(200)으로 검색키, 마스크, 검색결과 데이터를 제공해 준다.
한편, TCAM 엔트리 룩업 모듈(230)에서는 검색키를 생성하여 TCAM(200)에 제 공하고, 그 결과로 TCAM(200)으로부터 수신한 검색 결과 데이터를 가지고 룩업을 수행한다.
NPU(Network Processor Unit)나 프로그램이 가능한 로직 칩의 한 형태인 FPGA(Field-Programmable Gate Array)와 연동하여 TCAM을 SRAM과 같은 메모리로 인식하게 하여 룩업을 구현하는 것도 가능하다.
여기서, NPU는 네트워크에서 마치 컴퓨터의 CPU와 같은 역할을 수행하는 소프트웨어 프로그래밍이 가능한 칩 또는 칩 세트로, 중앙처리장치(CPU)가 맡았던 네트워크 연결과 주변기기 제어기능을 분담하는 장치이다.
FPGA는 프로그램이 가능한 로직 칩(logic chip)의 한 형태로, PLD (Programmable Logic Device)와 비슷하지만, PLD가 일반적으로 수백 개의 게이트에 제한되는 데 반해, FPGA는 수천 개의 게이트를 지원한다.
도 3은 본 발명에 따른 시퀀스 ID에 따라 구분되는 TCAM의 구조를 나타낸다.
TCAM(200)의 크기는 정해져 있기 때문에 일정한 크기로 지원 가능한 패킷 필터링의 룰(Rule) 개수는 제한적이다. 시스템의 용량에 따라 정해지는 룰의 개수를 N이라고 하는 경우, TCAM을 초기화 할 때 도 3에서와 같이 전체 TCAM을 N 등분하여 각각에 시퀀스 ID를 1부터 N까지 부여한다. N 등분된 각각의 시퀀스 ID 하나에 포함된 엔트리의 수는 TCAM의 초기화 시에는 모두 동일하게 부여된다. 이후 각 시퀀스 ID별로 엔트리 수가 증가할 수도 있다.
시퀀스 ID는 시스템 관리자가 룰의 우선순위를 정할 때 사용되며, 이러한 시 퀀스 ID는 TCAM 내의 엔트리들을 액세스할 때 이용된다. 아래의 [표 1]은 패킷 분류(classification)와 이에 따른 시퀀스 ID의 분배의 바람직한 일 실시예를 나타낸다.
rule1(rule ID) | classification_rule1 | sequence ID 1 |
rule1(rule ID) | classification_rule2 | sequence ID 2 |
rule2(rule ID) | classification_rule1 | sequence ID 3 |
rule2(rule ID) | classification_rule2 | sequence ID 4 |
[표 1]에서 보듯이, 하나의 룰(Rule) ID에 여러 개의 분류 룰(classification_rule)이 생길 수도 있고, 하나의 분류 룰이 다수의 룰 ID에 포함될 수도 있다. 이때, 패킷 분류를 위해 TCAM 내부에는 [표 1]에 정의된 4 가지가 모두 엔트리로 포함되어야 하며, 각 엔트리들의 구분은 시퀀스 ID를 이용한다.
시스템 관리자는 각 룰에 유일한 시퀀스 ID 값을 부여함으로써 TCAM 내 엔트리들 간 구분이 가능하도록 한다. TCAM에서는 시퀀스 ID에 따라 도 3과 같이 나뉘어진 해당 영역에 엔트리들을 저장한다. 이때 엔트리들의 시퀀스 ID 값이 작을수록 TCAM 내부에서 높은 위치에 둠으로써 각 엔트리 간에 우선순위 등급을 유지하게 된다.
룰이 포트에 대해서 가변 범위 값을 가지는 경우에는, 하나의 시퀀스 ID에 대해 여러 개의 TCAM 엔트리가 생성되고, 도 3의 분류된 시퀀스 ID 중 해당하는 시퀀스 ID 영역에 저장된다.
도 4는 본 발명에 따른 TCAM 테이블 관리 방법에 의해 TCAM 내에 엔트리를 추가하는 경우의 동작 흐름을 나타낸다.
우선, 추가되는 엔트리의 시퀀스 ID를 입력받고(S401), 해당 시퀀스 ID가 TCAM의 초기화시 부여된 범위 내(1이상 N이하, 여기서 N은 TCAM을 분할하는 전체 시퀀스 ID의 개수)인지 확인하고(S402), 아닌 경우에는 절차를 종료한다.
추가 요구된 엔트리의 시퀀스 ID가 적정 범위 내인 것으로 판단되면, 해당 시퀀스 ID에 해당하는 최초 엔트리의 주소를 검색한다(S403). 해당 시퀀스 ID에 할당된 엔트리가 모두 점유되어 있는 경우를 대비해야 하므로 해당 시퀀스 ID 영역의 빈 공간이 있는지 확인한다(S404). 해당 시퀀스 ID 영역이 모두 차 있는 경우는 가장 가까이에 위치하는 빈 엔트리를 찾아서 이동하고(S405), 해당 시퀀스 ID의 영역을 확장한다(S406). 그리고, 시퀀스 ID 영역의 확장으로 신규 생성된 영역에 엔트리를 추가한다(S407). 해당 시퀀스 ID 영역이 모두 차 있지 않은 경우에는, 해당 영역 중 빈 공간 영역에 원하는 엔트리를 추가하는 과정만 거치면 된다(S407).
도 5는 확장된 엔트리들이 할당된 시퀀스 ID 영역을 벗어나는 경우의 본 발명에 따른 TCAM 테이블 관리 방법을 나타내고 있다.
즉, 도 5는 도 4의 흐름 중 추가하고자 하는 엔트리가 추가되어야 할 시퀀스 ID 영역에 빈 공간이 없는 경우의 동작 흐름을 좀더 세부적으로 도시한 것이다.
확장된 엔트리들이 할당된 시퀀스 ID 영역 이상인 경우에는 다른 시퀀스 ID 영역에 할당된 비어 있는 엔트리를 찾는 셔플링(Shuffling)이 발생한다. 셔플링은 해당 시퀀스 ID와 가장 가까운 빈 영역을 이용한다. 시퀀스 ID가 엔트리들의 우선 순위를 결정하므로 시퀀스 ID에 해당하는 엔트리들간의 순서가 바뀌어서는 안 될 것이다. 하지만, 동일한 시퀀스 ID 내의 엔트리들 간에는 별도로 우선순위를 정해놓은 것은 아니므로, 순서를 유지할 필요는 없다. 이는 앞서 설명한 바와 같이, 하나의 룰에 하나의 시퀀스 ID를 할당해 놓았기 때문이다.
도 5는 두 가지 실시예를 들어 하나의 시퀀스 ID 내의 엔트리 확장을 설명하고 있다.
첫 번째는 현재 시퀀스 ID보다 작은 값의 시퀀스 ID 영역으로 셔플링이 발생하는 경우이고, 두 번째는 현재 시퀀스 ID보다 큰 값의 시퀀스 ID 영역으로 셔플링이 발생하는 경우이다.
현재의 시퀀스 ID를 'A'라 하고, 빈 공간이 있는 시퀀스 ID를 'B'라고 하자.
도 5의 실시예에서는 현재 추가할 엔트리가 속하는 시퀀스 ID에 빈 공간이 없는 경우를 가정하고 있으므로, A와 B가 같은 경우는 배제하고 모든 상황을 고려하고 있다. 실제로 추가하고자 하는 시퀀스 ID에 빈 공간이 있는 경우는 해당 엔트리를 간단하게 추가하기만 하면 되므로, 크게 문제될 것이 없다.
우선, 현재의 시퀀스 ID(A)와 빈 공간이 있는 시퀀스 ID(B)를 비교하여(S500), 현재의 시퀀스 ID가 빈 공간이 있는 시퀀스 ID보다 큰 경우와 작은 경우 두 가지의 경우로 나누어 절차를 진행한다.
첫 번째 경우(A가 B보다 큰 경우)는 빈 공간이 있는 시퀀스 ID에 1을 더한 시퀀스 영역(B+1)의 마지막 엔트리를 빈 공간이 있는 시퀀스 ID(B) 영역의 마지막 엔트리가 있던 자리로 이동시킨다(S501). 그리고 빈 공간이 있는 시퀀스 ID에 1을 더한 시퀀스 영역(B+1)의 시작 위치를 상기에서 이동시킨 (B+1) 시퀀스 ID에 속하는 엔트리 위치로 변경한다(S502).
상기의 절차를 거치고 나면 이제는 시퀀스 영역 (B+1)에 빈 공간이 생기게 된다. 시퀀스 영역 (B+2) 이후로부터 시퀀스 영역 A에 이르기까지는 빈 공간이 없으므로(B를 설정할 당시에 이미 A와 가장 가까운 빈 공간을 가진 시퀀스 ID의 영역으로 설정하였으므로), 상기의 절차를 시퀀스 ID A를 만나기까지 반복하여야 한다. 이때, 빈 공간은 시퀀스 영역 (B+1)이므로, 시퀀스 영역 B에 B+1을 대입하여(S503), 상기 절차 S501과 S502를 반복한다.
이러한 절차를 반복하면서 시퀀스 ID A의 영역을 만나는지 관찰하다가(S504), 시퀀스 ID A 영역에 이르게 되는 경우 (A-1) 영역의 마지막 엔트리 위치에 추가하고자 했던 엔트리를 추가하고, 이 엔트리를 A 시퀀스 영역의 시작 위치로 변경한다(S505).
첫 번째 경우를 하나의 실시예를 들어 구체적으로 살펴보자. 예를 들어 시퀀스 ID 값이 5인 영역에 엔트리를 추가하고자 하는데, 시퀀스 ID 5의 영역에는 빈 공간이 없어 제일 근접한 시퀀스 ID 3의 영역으로 셔플링이 발생한다고 가정한다.
시퀀스 ID 4에 해당하는 엔트리들 중 가장 맨 마지막 엔트리를 맨 처음 엔트리 바로 앞 영역(현재는 시퀀스 ID 3에 해당하는 영역)으로 옮긴다. 시퀀스 ID 4의 시작 부분을 시퀀스 ID 4의 영역에서 시퀀스 ID 3의 영역으로 이동한 엔트리로 바꾸어준다. 시퀀스 ID 4의 영역 중 시퀀스 ID 3으로 옮겨간 엔트리가 비운 자리에 시퀀스 ID 5에 추가하고자 했던 엔트리를 추가한다. 그리고 마지막으로 시퀀스 ID 5의 시작을 상기 추가한 엔트리 영역으로 변경하면 된다.
다음으로, 두 번째 경우(A가 B보다 작은 경우)의 절차에 대해 살펴보자.
두 번째 경우는 빈 공간이 있는 시퀀스 영역(B)의 첫 엔트리를 B 영역의 마지막 엔트리 다음 위치로 옮긴다(S511). 그러면 B 영역의 처음 엔트리 자리는 빈 공간이 되므로, B 영역의 시작을 빈 공간 다음 엔트리 위치로 변경한다(S512). 이 시점에서는 (B-1) 영역에 빈 공간이 생겼으므로, B에 (B-1)을 대입하고(S513), 상기 절차 S511과 S512를 반복하면 된다.
이와 같은 절차를 반복하면서 시퀀스 ID A를 만나게 되는지 관찰하였다가(S514), A 영역에 생긴 빈 공간에 추가하고자 했던 새로운 엔트리를 추가하면 된다(S515).
두 번째 경우인 현재 시퀀스 ID보다 큰 값의 시퀀스 ID 영역으로 셔플링이 발생하는 경우에 대해 구체적으로 살펴보기로 한다. 예를 들어, 시퀀스 ID 값이 5인 영역에 빈 공간이 없어 시퀀스 ID가 7인 영역으로 셔플링이 발생한다고 가정하자.
우선, 시퀀스 ID 7의 시작 엔트리를 시퀀스 ID 7의 마지막 엔트리의 다음 공간(시퀀스 ID 8인 영역에 위치)으로 옮기고, 시퀀스 ID 7의 시작 부분을 원 시작 엔트리의 다음 엔트리로 변경한다. 좀 전까지 시퀀스 ID 7의 시작 엔트리가 차지했던 빈 공간에는 시퀀스 ID 6의 시작 엔트리가 옮겨오게 된다. 이렇게 되면 시퀀스 ID 6의 시작 엔트리 또한 원 시작 엔트리의 다음 엔트리로 변경되어야 한다. 원래 시퀀스 ID 6의 시작 엔트리가 차지했던 공간은 시퀀스 ID 5의 마지막 엔트리로 추가되고, 시퀀스 ID 5에 추가하고자 했던 확장 엔트리를 이 공간에 추가하면 된다.
도 6은 본 발명에 따른 TCAM 테이블 관리 방법에 의해 TCAM 내의 엔트리를 삭제하는 경우의 동작 흐름을 나타낸다.
전체 TCAM을 균등 분할하여 분배되었던 각 시퀀스 내의 엔트리들은 도 4 내지 5의 경우와 같이 추가되기도 하지만 때로는 삭제되는 경우도 있다. 이와 같은 경우로, 사용자가 더 이상 필요하지 않다고 판단한 분류(Classification) 룰을 삭제하고자 할 때, 이에 따른 시퀀스 ID의 삭제와 함께 해당 시퀀스 ID에 포함되는 엔트리 모두가 삭제되어야 하는 경우를 그 예로 들 수 있다.
삭제 절차는, 우선 삭제되는 엔트리의 시퀀스 ID를 입력받고(S601), 해당 시퀀스 ID가 TCAM의 초기화시 부여된 범위 내(1이상 N이하, 여기서 N은 TCAM을 분할하는 전체 시퀀스 ID의 개수)인지 확인하고(S602), 아닌 경우에는 절차를 종료한다.
추가 요구된 엔트리의 시퀀스 ID가 적정 범위 내인 것으로 판단되면, 해당 시퀀스 ID에 해당하는 최초 엔트리의 주소를 검색하여(S603). 최초 엔트리를 해당 영역에서 삭제한다(S604). 해당 시퀀스 ID 영역 내의 모든 엔트리를 삭제하는 경우이므로, 해당 시퀀스 ID 내의 모든 엔트리를 삭제하였는지 검토하여(S605), 개별 엔트리에 대한 삭제 작업을 반복한다. 해당 시퀀스 ID 내의 모든 엔트리를 삭제한 경우에는 절차를 종료하면 된다. 이 경우 TCAM 내에서 삭제된 시퀀스 ID를 가지는 엔트리는 더 이상 존재하지 않게 된다.
본 발명은, 사용자가 정한 TCAM 내의 엔트리들에 대한 사용자가 정한 룰의 우선순위를 유지할 수 있어 패킷 분류나 필터링을 위한 룰 중에 포트 번호에 대한 범위-매치(range-match)를 구현해야 할 경우 여러 개의 엔트리로 확장된 엔트리들에 대해 하나의 시퀀스 ID를 부여할 수 있도록 함으로써 TCAM 메모리의 관리가 용이하도록 하는 이점을 가진다.
Claims (20)
- 터너리(Ternary) CAM(Content Addressable Memory)을 관리하는 방법에 있어서,시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하는 단계;상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하는 단계; 및새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 해당 시퀀스 ID 영역을 확장하고 새로운 엔트리를 추가하여, 상기 터너리 CAM을 제어하는 단계를 포함하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 개별적인 시퀀스 ID로 분할된 영역 내의 모든 엔트리는 동일한 우선순위를 가지는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 분할 단계는,상기 터너리 CAM의 초기화 시, 분할되는 각각의 시퀀스 ID별 보유 엔트리 수가 모든 시퀀스 ID에 대해 동일한 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 분할 단계에서,상기 패킷 분류 룰에 의한 시퀀스 ID의 결정은, 하나의 패킷 분류 룰에 하나의 시퀀스 ID가 일대 일로 대응되도록 매칭하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 분할 단계는,상기 시퀀스 ID의 숫자가 작을수록 상기 터너리 CAM의 상단에 위치하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 시퀀스 ID의 수는 상기 터너리 CAM의 용량에 따라 제한되는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 터너리 CAM 제어 단계는,상기 터너리 CAM의 특정 시퀀스 ID에 새로운 엔트리가 추가되는 경우,상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 초기 분할시 부여된 시퀀스 ID 범위 내인지 확인하는 단계;상기 확인 결과 입력된 시퀀스 ID가 상기 범위 내인 경우, 상기 입력 시퀀스 ID 내에 상기 새로운 엔트리를 추가할 빈 공간이 존재하는지 확인하는 단계; 및상기 확인 결과, 빈 공간이 없는 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID 내의 빈 엔트리 공간을 활용하여, 상기 새로운 엔트리를 추가하고자 했던 상기 입력 시퀀스 ID의 엔트리로 추가하는 단계를 포함하는 터너리 내용 주소화 메모리 관리 방법.
- 제 7항에 있어서,상기 엔트리 추가 단계는,상기 입력 시퀀스 ID가 상기 보상 시퀀스 ID보다 큰 경우,상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 7항에 있어서,상기 엔트리 추가 단계는,상기 입력 시퀀스 ID가 상기 보상 시퀀스 ID보다 작은 경우,상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 사이 영역에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 1항에 있어서,상기 터너리 CAM 제어 단계는,시스템 관리자에 의해 삭제되는 룰이 발생되는 경우에는 삭제되는 룰에 해당하는 시퀀스 ID 영역 내의 모든 엔트리를 삭제하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 제 10항에 있어서,상기 시퀀스 ID 영역 내의 엔트리 삭제는,상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 분할 단계에서 부여된 범위 내인지 확인하는 단계; 와상기 입력된 시퀀스 ID가 적정 범위 내인 경우, 상기 시퀀스 ID의 시작 엔트리의 위치를 확인하고 해당 엔트리를 삭제하고, 상기 시퀀스 ID 내에 존재하는 모든 엔트리가 다 삭제될 때까지 엔트리의 삭제를 반복하는 단계를 포함하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 방법.
- 터너리(Ternary) CAM(Content Addressable Memory)을 관리하는 방법에 있어서,시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하는 단계;상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하는 단계; 및새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단 또는 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 단계를 포함하는 터너리 내용 주소화 메모리 관리 방법.
- 터너리(Ternary) CAM(Content Addressable Memory)을 관리하는 장치에 있어서,시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하여 상기 터너리 CAM을 초기화하는 TCAM 하드웨어 구성 모듈; 과상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하고, 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는 해당 시퀀스 ID 영역을 확장하고 새로운 엔트리를 추가하여, 상기 터너리 CAM을 제어하는 TCAM 엔트리 관리 모듈을 포함하는 터너리 내용 주소화 메모리 관리 장치.
- 제 13항에 있어서,상기 TCAM 하드웨어 구성 모듈은,상기 개별적인 시퀀스 ID로 분할된 영역 내의 모든 엔트리는 동일한 우선순위를 가지는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 장치.
- 제 13항에 있어서,상기 TCAM 하드웨어 구성 모듈은,상기 패킷 분류 룰에 의한 시퀀스 ID의 결정은, 하나의 패킷 분류 룰에 하나의 시퀀스 ID가 일대 일로 대응되도록 매칭하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 장치.
- 제 13항에 있어서,상기 TCAM 엔트리 관리 모듈은,상기 터너리 CAM의 특정 시퀀스 ID에 새로운 엔트리가 추가되는 경우,상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 초기 분할시 부여된 시퀀스 ID 범위 내인지, 상기 입력 시퀀스 ID 내에 상기 새로운 엔트리를 추가할 빈 공간이 존재하는지 확인하고,상기 확인 결과, 빈 공간이 없는 경우에는 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID 내의 빈 엔트리 공간을 활용하여, 상기 새로운 엔트리를 추가하고자 했던 상기 입력 시퀀스 ID의 엔트리로 추가하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 장치.
- 제 13항에 있어서,상기 TCAM 엔트리 관리 모듈은,시스템 관리자에 의해 삭제되는 룰이 발생되는 경우, 상기 삭제되는 룰에 해당하는 시퀀스 ID 영역 내의 모든 엔트리를 삭제하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 장치.
- 제 17항에 있어서,상기 시퀀스 ID 내의 엔트리 삭제는,상기 추가되는 패킷 엔트리의 시퀀스 ID를 입력받아, 입력된 시퀀스 ID가 상기 터너리 CAM의 분할 단계에서 부여된 범위 내인지 확인하고,상기 입력된 시퀀스 ID가 적정 범위 내인 경우, 상기 시퀀스 ID의 시작 엔트리의 위치를 확인하고 해당 엔트리를 삭제하고, 상기 시퀀스 ID 내에 존재하는 모든 엔트리가 다 삭제될 때까지 엔트리의 삭제를 반복하는 것을 특징으로 하는 터너리 내용 주소화 메모리 관리 장치.
- 제 13항에 있어서,검색키를 생성하여 상기 터너리 CAM에 제공하고, 그 결과로 터너리 CAM으로부터 수신한 검색 결과 데이터를 이용해 룩업을 수행하는 TCAM 엔트리 룩업 모듈을 더 포함하는 터너리 내용 주소화 메모리 관리 장치.
- 터너리(Ternary) CAM(Content Addressable Memory)을 관리하는 장치에 있어서,시스템 관리자에 의해 설정된 패킷 분류 룰에 의해 결정되는 시퀀스 ID의 수만큼 상기 터너리 CAM을 분할하여 상기 터너리 CAM을 초기화하는 TCAM 하드웨어 구성 모듈; 과상기 패킷 분류 룰에 따라 우선순위가 부여된 패킷을 상기 우선순위에 따른 시퀀스 ID의 엔트리 저장 영역에 저장하고, 새로운 엔트리를 추가하고자 하는 시퀀스 ID에 배당된 엔트리 저장 영역이 모두 점유된 경우에는, 상기 시퀀스 ID와 가장 가깝게 위치하는 빈 엔트리 공간을 보유하는 보상 시퀀스 ID를 검색하고, 상기 보상 시퀀스 ID의 영역 내의 빈 엔트리 공간을 이용해 상기 입력 시퀀스 ID와 상기 보상 시퀀스 ID 내에 존재하는 모든 시퀀스 ID 영역을 상기 터너리 CAM의 상단 또는 하단으로 순차적으로 이동하고, 상기 이동 결과 상기 입력 시퀀스 ID 영역 내에 새롭게 발생한 빈 엔트리 공간에 새로운 엔트리를 추가하는 TCAM 엔트리 관리 모듈을 포함하는 터너리 내용 주소화 메모리 관리 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050003887A KR100612256B1 (ko) | 2005-01-14 | 2005-01-14 | 터너리 내용 주소화 메모리 관리 장치 및 그 방법 |
US11/330,258 US20060176721A1 (en) | 2005-01-14 | 2006-01-12 | Method and apparatus for managing ternary content addressable memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050003887A KR100612256B1 (ko) | 2005-01-14 | 2005-01-14 | 터너리 내용 주소화 메모리 관리 장치 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060083369A KR20060083369A (ko) | 2006-07-20 |
KR100612256B1 true KR100612256B1 (ko) | 2006-08-14 |
Family
ID=36779752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050003887A KR100612256B1 (ko) | 2005-01-14 | 2005-01-14 | 터너리 내용 주소화 메모리 관리 장치 및 그 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20060176721A1 (ko) |
KR (1) | KR100612256B1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101056029B1 (ko) * | 2006-11-24 | 2011-08-10 | 주식회사 쿠오핀 | 내부 내용주소메모리 모듈을 이용한 룩업 장치 |
US9049157B1 (en) * | 2009-08-16 | 2015-06-02 | Compass Electro-Optical Systems Ltd | Method and device for improving scalability of longest prefix match |
CA2895688A1 (en) * | 2012-12-19 | 2014-06-26 | Nec Corporation | Packet processing apparatus, flow entry configuration method and program |
US9559897B2 (en) | 2012-12-21 | 2017-01-31 | Brocade Communications Systems, Inc. | Device ID assignment in a system of devices |
US9177646B2 (en) | 2013-05-06 | 2015-11-03 | International Business Machines Corporation | Implementing computational memory from content-addressable memory |
US9313102B2 (en) | 2013-05-20 | 2016-04-12 | Brocade Communications Systems, Inc. | Configuration validation in a mixed node topology |
US9853889B2 (en) | 2013-05-20 | 2017-12-26 | Brocade Communications Systems, Inc. | Broadcast and multicast traffic reduction in stacking systems |
US10284499B2 (en) | 2013-08-22 | 2019-05-07 | Arris Enterprises Llc | Dedicated control path architecture for systems of devices |
US9185049B2 (en) | 2013-10-31 | 2015-11-10 | Brocade Communications Systems, Inc. | Techniques for simplifying stacking trunk creation and management |
US9577932B2 (en) * | 2014-02-12 | 2017-02-21 | Brocade Communications Systems, Inc. | Techniques for managing ternary content-addressable memory (TCAM) resources in heterogeneous systems |
US9224091B2 (en) | 2014-03-10 | 2015-12-29 | Globalfoundries Inc. | Learning artificial neural network using ternary content addressable memory (TCAM) |
US9692695B2 (en) | 2014-03-27 | 2017-06-27 | Brocade Communications Systems, Inc. | Techniques for aggregating hardware routing resources in a multi-packet processor networking system |
US9692652B2 (en) | 2014-04-03 | 2017-06-27 | Brocade Communications Systems, Inc. | Framework for reliably communicating port information in a system of devices |
US9692684B2 (en) * | 2014-09-05 | 2017-06-27 | Telefonaktiebolaget L M Ericsson (Publ) | Forwarding table precedence in SDN |
US10091059B2 (en) | 2014-12-16 | 2018-10-02 | Arris Enterprises Llc | Handling connections between network devices that support multiple port communication modes |
CN110636012B (zh) * | 2019-10-18 | 2023-05-02 | 南京贝伦思网络科技股份有限公司 | 一种基于zcam芯片添加多种掩码规则的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003234762A (ja) | 2002-02-07 | 2003-08-22 | Nippon Telegr & Teleph Corp <Ntt> | テーブル検索装置および方法およびプログラムおよび記録媒体 |
JP2003272386A (ja) | 2002-03-20 | 2003-09-26 | Mitsubishi Electric Corp | Tcamセル、tcamセルアレイ、アドレス検索メモリおよびネットワークアドレス検索装置 |
KR20040001431A (ko) * | 2002-06-28 | 2004-01-07 | 삼성전자주식회사 | 터너리 내용 주소화 메모리 장치 |
KR20040048651A (ko) * | 2002-12-04 | 2004-06-10 | 삼성전자주식회사 | 터너리 내용 번지 메모리 셀 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289414B1 (en) * | 1998-10-08 | 2001-09-11 | Music Semiconductors, Inc. | Partially ordered cams used in ternary hierarchical address searching/sorting |
US6467019B1 (en) * | 1999-11-08 | 2002-10-15 | Juniper Networks, Inc. | Method for memory management in ternary content addressable memories (CAMs) |
US6532516B1 (en) * | 2001-09-27 | 2003-03-11 | Coriolis Networks, Inc. | Technique for updating a content addressable memory |
US6687786B1 (en) * | 2001-09-28 | 2004-02-03 | Cisco Technology, Inc. | Automated free entry management for content-addressable memory using virtual page pre-fetch |
US7188211B2 (en) * | 2002-11-29 | 2007-03-06 | Mosaid Technologies Incorporated | Block programmable priority encoder in a CAM |
US20050102428A1 (en) * | 2003-11-12 | 2005-05-12 | Heintze Nevin C. | Memory management for ternary CAMs and the like |
-
2005
- 2005-01-14 KR KR1020050003887A patent/KR100612256B1/ko not_active IP Right Cessation
-
2006
- 2006-01-12 US US11/330,258 patent/US20060176721A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003234762A (ja) | 2002-02-07 | 2003-08-22 | Nippon Telegr & Teleph Corp <Ntt> | テーブル検索装置および方法およびプログラムおよび記録媒体 |
JP2003272386A (ja) | 2002-03-20 | 2003-09-26 | Mitsubishi Electric Corp | Tcamセル、tcamセルアレイ、アドレス検索メモリおよびネットワークアドレス検索装置 |
KR20040001431A (ko) * | 2002-06-28 | 2004-01-07 | 삼성전자주식회사 | 터너리 내용 주소화 메모리 장치 |
KR20040048651A (ko) * | 2002-12-04 | 2004-06-10 | 삼성전자주식회사 | 터너리 내용 번지 메모리 셀 |
Also Published As
Publication number | Publication date |
---|---|
KR20060083369A (ko) | 2006-07-20 |
US20060176721A1 (en) | 2006-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100612256B1 (ko) | 터너리 내용 주소화 메모리 관리 장치 및 그 방법 | |
US9871728B2 (en) | Exact match hash lookup databases in network switch devices | |
KR100705593B1 (ko) | 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 | |
US7571156B1 (en) | Network device, storage medium and methods for incrementally updating a forwarding database | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
US8335780B2 (en) | Scalable high speed relational processor for databases and networks | |
KR100864888B1 (ko) | 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 | |
US6842791B2 (en) | Method and apparatus for memory efficient fast VLAN lookups and inserts in hardware-based packet switches | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
CN111937360B (zh) | 最长前缀匹配 | |
Li et al. | Tuple space assisted packet classification with high performance on both search and update | |
US7592935B2 (en) | Information retrieval architecture for packet classification | |
US9704574B1 (en) | Method and apparatus for pattern matching | |
Warkhede et al. | Multiway range trees: scalable IP lookup with fast updates | |
US10515015B2 (en) | Hash table-based mask length computation for longest prefix match caching | |
EP1063827A2 (en) | Method for address lookup | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
US20050038907A1 (en) | Routing cache management with route fragmentation | |
Kaxiras et al. | IPStash: a set-associative memory approach for efficient IP-lookup | |
Xin et al. | FPGA-based updatable packet classification using TSS-combined bit-selecting tree | |
Yu et al. | Forwarding engine for fast routing lookups and updates | |
Demetriades et al. | An efficient hardware-based multi-hash scheme for high speed IP lookup | |
KR100493099B1 (ko) | 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리 | |
Li et al. | Optimized hash lookup for bloom filter based packet routing | |
Yazdani et al. | Performing IP lookup on very high line speed |
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: 20090730 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |