KR100680527B1 - 엘투 스위치 및 엘쓰리 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법 - Google Patents
엘투 스위치 및 엘쓰리 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법 Download PDFInfo
- Publication number
- KR100680527B1 KR100680527B1 KR1020050076620A KR20050076620A KR100680527B1 KR 100680527 B1 KR100680527 B1 KR 100680527B1 KR 1020050076620 A KR1020050076620 A KR 1020050076620A KR 20050076620 A KR20050076620 A KR 20050076620A KR 100680527 B1 KR100680527 B1 KR 100680527B1
- Authority
- KR
- South Korea
- Prior art keywords
- tree
- index
- bit
- mac
- information
- Prior art date
Links
Images
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/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping 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/72—Routing based on the source address
-
- 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
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 L2 스위치 및 L3 스위치에서 목적지 맥 어드레스(Destination MAC Address)를 저장하는 맥 테이블(MAC Table)과, 수신되는 소오스 맥 어드레스(Source MAC Address)에 대하여 각각 상기 맥 테이블의 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로, 복수의 맥 어드레스 링크가 있는지를 지시하는 복수 맥 링크 지시 정보와, 맥 어드레스를 최상위비트 또는 최하위 비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하는 하시 테이블(Hash Table)과; 상기 하시 테이블의 복수 맥 링크 지시 정보에서 복수의 맥 어드레스가 링크되어 있음을 지시하는 경우 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로서 두 개의 트리 레프트 및 라이트 테이블로 구획되어 있으며, 각각의 테이블이 또 다른 하위 링크가 존재하는지를 지시하는 하위 링크 존재 정보와, 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하고 있는 트리 테이블(Trie Table)을 포함하고서, 메모리 읽고 쓰는 횟수를 최대한으로 줄이도록 하는 트리 테이블을 이용한 어드레스 탐색 방법을 제공한다.
L2 스위치, L3 스위치, 맥(MAC) 어드레스, IP 어드레스, 하시(Hash) 테이블, 맥 테이블, 트리(Trie) 테이블
Description
도 1은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 하시(Hash) 테이블의 포맷을 도시한 도면,
도 2는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 트리(Trie) 테이블의 포맷을 도시한 도면,
도 3은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 맥(MAC) 테이블의 포맷을 도시한 도면,
도 4는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 사용되는 전체적인 테이블을 도시한 도면,
도 5는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색을 설명하기 위한 도면,
도 6은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 하시 테이블이 비어 있을 경우의 동작 흐름을 도시한 도면,
도 7은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 하시 테이블의 링크 값이 맥 테이블을 지시하고 있을 경우의 동작 흐름을 도시한 도면,
도 8a 및 도 8b는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 하시 테이블의 링크 값이 트리 테이블을 지시하고 있을 경우의 동작 흐름을 도시한 도면,
도 9 내지 도 11은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에 의하여 소오스 어드레스를 저장하는 동작 흐름을 도시한 도면이다.
본 발명은 L2 스위치 또는 L3 스위치에서 패킷의 소오스 맥 어드레스(Source MAC Address) 또는 소오스 IP 어드레스를 저장하고 목적지 맥 어드레스(Destination MAC Address) 또는 목적지 IP 어드레스를 탐색하는 방법에 관한 것으로, 보다 상세하게는 트리 테이블(Trie Table)을 사용하여 메모리 읽고 쓰는 횟수를 최대한으로 줄이도록 하는 L2 및 L3 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법에 관한 것이다.
일반적으로, 스위칭 장비의 구조에는 크로스바 구조, 공유 메모리 구조, 고속 버스 구조 등으로 구분될 수 있는데, 크 로스바(Cross Bar) 구조는 점대점(Point-to-Point) 연결을 최적화하기 위해 설계된 것으로, 트래픽이 많지 않을 때는 수신된 프레임을 버퍼에 저장하지 않고 목적지 포트로 바로 전송할 수 있지만 트래픽이 많은 경우에는 버퍼를 필요로 하는 스위칭 구조이고, 공유 메모리(Shared Memory) 구조는 스위치가 프레임을 전송하기 전에 메인 메모리에 위치하고 있는 입력 버퍼에 저장하는 축적전송 방식과 유사한 스위칭 구조이며, 고속 버스(High Speed Bus) 구조는 스위칭 집적회로들 사이에 고속의 데이터 버스가 연결되어 있으므로 각 포트의 최대 전송 속도를 동시에 제공해 줄 수 있는 스위칭 칩(ASIC 칩)들 사이에 고속의 데이터 버스가 연결되어 있으므로 각 포트의 최대 전송 속도를 동시에 제공해 줄 수 있는 스위칭 구조이다.
이러한 스위칭 장비의 종류로는 10Base-T 스위칭 허브, 10/100Base-T 스위칭 허브, 100Base-T 스위칭 허브 등이 있으며, 이는 데이터 링크 계층 스위칭을 제공하는 L2 스위치로서 이외에도 네트워크 계층 스위칭 기능을 제공하는 L3 스위치 등이 있는데, 여기서, L2 스위치는 이더넷(Ethernet)에서 발생하는 충돌(Collision)을 최소화하기 위해 충돌 도메인을 분리하고, 선택적으로 트래픽을 세그먼트로 분리하여 효과적인 대역폭 크기를 갖도록 하는 역할을 수행한다.
그리고, L2 스위치는 자신과 링크되어 있는 호스트가 스위치 측으로 패킷을 전송하는 경우 해당 패킷의 발신지 어드레스(source address)를 판독하여 MAC 어드레스 테이블에 등록하고, 스위치의 한 포트로 패킷이 수신되는 경우 해당 패킷의 목적지 어드레스(destination address)를 판독한 후에 MAC 어드레스 테이블을 검색하여 대응하는 포트로 패킷을 스위칭 처리한다.
상기 L2 스위치에서 소오스 맥 어드레스를 저장하고 목적지 맥 어드레스를 찾기 위하여 48비트 맥 어드레스에 해당하는 테이블을 모두 만들어 놓고 맥 어드레스를 각 테이블의 인덱스로 사용하는 방법이 가장 빠르게 패킷 스위칭을 수행할 수 있는 방법이나 이 경우 메모리의 크기가 엄청나게 증가해야 하는 문제점이 있다.
한편, 상기 L3 스위치는 TCP/IP 프로토콜 스택에서 맥 계층(MAC layer)인 계층2(Layer2)에서 동작하는 장비이다. 상기 L3 스위치에서도 소오스 MAC 어드레스 또는 소오스 IP 어드레스를 저장하고 목적지 MAC 어드레스 또는 목적지 IP 어드레스를 찾기 위하여 MAC 어드레스 또는 IP 어드레스에 해당하는 테이블을 모두 만들어 놓고 MAC 어드레스 또는 IP 어드레스를 각 테이블의 인덱스로 사용하는 방법이 가장 빠르게 패킷 스위칭을 수행할 수 있는 방법이나 이 경우에도 메모리의 크기가 엄청나게 증가해야 하는 문제점이 있다.
따라서, 메모리 크기를 증가시키지 않으면서도 L2 스위치 및 L3 스위치의 패킷 스위칭 속도를 현저히 증가시킬 수 있는 방법의 개발이 요망되고 있다.
따라서, 본 발명은 상기한 종래 기술의 요망에 따라 안출된 것으로, L2 및 L3 스위치에서 트리 테이블(Trie Table)을 사용하여 메모리 읽고 쓰는 횟수를 최대한으로 줄이도록 하는 트리 테이블을 이용한 어드레스 탐색 방법을 제공하고자 함에 그 목적이 있다.
상기한 목적을 달성하기 위해 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법은, 목적지 맥 어드레스를 저장하는 맥 테이블과; 수신되는 소오스 맥 어드레스에 대하여 각각 상기 맥 테이블의 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로, 복수의 맥 어드레스 링크가 있는지를 지시하는 복수 맥 링크 지시 정보와, 맥 어드레스를 최상위비트 또는 최하위 비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하는 하시 테이블과; 상기 하시 테이블의 복수 맥 링크 지시 정보에서 복수의 맥 어드레스가 링크되어 있음을 지시하는 경우 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로서 두 개의 트리 레프트 및 라이트 테이블로 구획되어 있으며, 각각의 테이블이 또 다른 하위 링크가 존재하는지를 지시하는 하위 링크 존재 정보와, 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하고 있는 트리 테이블을 포함하는 L2 스위치 및 L3 스위치에서의 맥 어드레스 탐색 방법에 있어서; 수신되는 소오스 맥 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블을 참조하여 맥 테이블을 액세스함에 있어서, 해당 하시 테이블의 복수 맥 링크 지시 정보가 복수의 맥 어드레스가 링크되어 있음을 지시하고 있는 경우, 상기 하시 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 하시 테이블의 차이 비트 위치 정보에 근거한 소오스 맥 어드레스의 해당 위치 비트값에 따라서 상기 트리 테이블을 구성하는 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 맥 테이블의 목적지 맥 어드레스를 찾아가되; 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블을 구성하는 하위 링크 존재 정보가 또 다른 하위 링크가 존재하는 것으로 지시하는 경우, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 차이 비트 위치 정보에 근거한 소오스 맥 어드레스의 해당 위치 비트 값에 따라서 상기 트리 테이블을 구성하는 하위 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 하위 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 맥 테이블의 목적지 맥 어드레스를 찾아가는 것을 특징으로 한다.
그리고, 상기 맥 어드레스 탐색 방법에 있어서, 상기 수신되는 소오스 맥 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블의 참조시에 해당 하시 테이블이 비어 있는 경우에는, 맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 맥 링크 지시 정보에 복수 맥 어드레스가 링크 되어 있지 않은 것으로 설정하고 차이 비트 위치 정보도 없는 것으로 설정하며 링크 인덱스 정보로서 상기 기록한 해당 맥 테이블의 맥 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
또, 상기 맥 어드레스 탐색 방법에 있어서, 상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 맥 테이블의 맥 인덱스로 설정되어 있고 이 맥 인덱스에 대응하는 맥 테이블의 목적지 맥 어드레스와 상시 수신한 소오스 맥 어드레스가 같지 않은 경우에는, 상기 소오스 맥 어드레스와 상기 목적지 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos1)와, 그 위치에서의 상기 소오스 맥 어드레스의 비트값(bit_value1)를 취득하고; 맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러, 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value1)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 맥 어드레스에 대한 정보가 기록된 맥 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 맥 어드레스에 대한 맥 테이블 정보를 기록하며, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 맥 링크 지시 정보에 복수 맥 어드레스가 링크되어 있는 것으로 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos1)를 설정하며 링크 인덱스 정보로서 상기 기록한 해당 트리 테이블의 트리 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
또한, 상기 맥 어드레스 탐색 방법에 있어서, 상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 트리 테이블의 트리 인덱스로 설정되어 있고 이 트리 인덱스에 대응하는 트리 테이블의 하위 링크 존재 정보가 또 다른 하위 링크가 존재하지 않는 것으로 지시하며 해당 트리 테이블에 설정된 맥 인덱스에 대응하는 맥 테이블의 목적지 맥 어드레스와 상기 수신한 소오스 맥 어드레스가 같지 않은 경우에는, 상기 해당 하시 테이블의 차이 비트 위치 정보에서 지시하는 비트 위치에 대응하는 상기 소오스 맥 어드레스의 비트값(bit_value2)을 취득하고, 그 비트값(bit_value2)에 따라서 상기 해당 하시 테이블의 링크 인덱스 정보에 대응하는 트리 테이블의 트리 레프트 테이블 또는 트리 라이트 테이블에 기록된 하위 링크 존재 정보(BIT_FLAG1)와, 차이 비트 위치 정보(BIT_POS1)와, 링크 인덱스 정보(BIT_LINK1)을 읽어서 취득하며; 상기 링크 인덱스 정보(BIT_LINK1)에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 목적지 맥 어드레스를 읽어내고 해당 목적지 맥 어드레스와 상기 수신한 소오스 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos3)와, 그 위치에서의 상기 소오스 맥 어드레스의 비트값(bit_value3)을 취득하고; 맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러, 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value3)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 맥 어드레스에 대한 정보가 기록된 맥 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 맥 어드레스에 대한 맥 테이블 정보를 기록하며; 상기 해당 하시 테이블의 링크 인덱스 정보에서 지시하는 링크 인덱스를 사용하여 트리 테이블을 액세스해서 상기 소오스 맥 어드레스의 비트값(bit_value2)에 따라서 해당 트리 테이블의 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽의 테이블에서 하위 링크 존재 정보에 하위 링크가 존재하고 있음을 지시하는 정보를 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos3)를 설정하며 링크 인덱스 정보에 상기 트리 인덱스 테이블에서 가져온 트리 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
한편, 상기한 목적을 달성하기 위해 본 발명에 따른 L3 스위치에서 트리 테이블을 이용한 IP 어드레스 탐색 방법은, 목적지 IP 어드레스를 저장하는 IP 테이블과; 수신되는 소오스 IP 어드레스에 대하여 각각 상기 IP 테이블의 목적지 IP 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로, 복수의 IP 어드레스 링크가 있는지를 지시하는 복수 IP 링크 지시 정보와, IP 어드레스를 최상위비트 또는 최하위 비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, IP 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하는 하시 테이블과; 상기 하시 테이블의 복수 IP 링크 지시 정보에서 복수의 IP 어드레스가 링크되어 있음을 지시하는 경우 목적지 IP 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로서 두 개의 트리 레프트 및 라이트 테이블로 구획되어 있으며, 각각의 테이블이 또 다른 하위 링크가 존재하는지를 지시하는 하위 링크 존재 정보와, IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, IP 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하고 있는 트리 테이블을 포함하는 L3 스위치에서의 IP 어드레스 탐색 방법에 있어서; 수신되는 소오스 IP 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블을 참조하여 IP 테이블을 액세스함에 있어서, 해당 하시 테이블의 복수 IP 링크 지시 정보가 복수의 IP 어드레스가 링크되어 있음을 지시하고 있는 경우, 상기 하시 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 하시 테이블의 차이 비트 위치 정보에 근거한 소오스 IP 어드레스의 해당 위치 비트값에 따라서 상기 트리 테이블을 구성하는 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 IP 테이블의 목적지 IP 어드레스를 찾아가되; 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블을 구성하는 하위 링크 존재 정보가 또 다른 하위 링크가 존재하는 것으로 지시하는 경우, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 차이 비트 위치 정보에 근거한 소오스 IP 어드레스의 해당 위치 비트 값에 따라서 상기 트리 테이블을 구성하는 하위 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 하위 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 IP 테이블의 목적지 IP 어드레스를 찾아가는 것을 특징으로 한다.
그리고, 상기 IP 어드레스 탐색 방법에 있어서, 상기 수신되는 소오스 IP 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블의 참조시에 해당 하시 테이블이 비어 있는 경우에는, IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 IP 링크 지시 정보에 복수 IP 어드레스가 링크 되어 있지 않은 것으로 설정하고 차이 비트 위치 정보도 없는 것으로 설정하며 링크 인덱스 정보로서 상기 기록한 해당 IP 테이블의 IP 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
또, 상기 IP 어드레스 탐색 방법에 있어서, 상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 IP 테이블의 IP 인덱스로 설정되어 있고 이 IP 인덱스에 대응하는 IP 테이블의 목적지 IP 어드레스와 상시 수신한 소오스 IP 어드레스가 같지 않은 경우에는, 상기 소오스 IP 어드레스와 상기 목적지 IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos1)와, 그 위치에서의 상기 소오스 IP 어드레스의 비트값(bit_value1)을 취득하고; IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러, 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value1)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 IP 어드레스에 대한 정보가 기록된 IP 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 IP 어드레스에 대한 IP 테이블 정보를 기록하며, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 IP 링크 지시 정보에 복수 IP 어드레스가 링크되어 있는 것으로 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos1)를 설정하며 링크 인덱스 정보로서 상기 기록한 해당 트리 테이블의 트리 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
또한, 상기 IP 어드레스 탐색 방법에 있어서, 상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 트리 테이블의 트리 인덱스로 설정되어 있고 이 트리 인덱스에 대응하는 트리 테이블의 하위 링크 존재 정보가 또 다른 하위 링크가 존재하지 않는 것으로 지시하며 해당 트리 테이블에 설정된 IP 인덱스에 대응하는 IP 테이블의 목적지 IP 어드레스와 상기 수신한 소오스 IP 어드레스가 같지 않은 경우에는, 상기 해당 하시 테이블의 차이 비트 위치 정보에서 지시하는 비트 위치에 대응하는 상기 소오스 IP 어드레스의 비트값(bit_value2)을 취득하고, 그 비트값(bit_value2)에 따라서 상기 해당 하시 테이블의 링크 인덱스 정보에 대응하는 트리 테이블의 트리 레프트 테이블 또는 트리 라이트 테이블에 기록된 하위 링크 존재 정보(BIT_FLAG1)와, 차이 비트 위치 정보(BIT_POS1)와, 링크 인덱스 정보(BIT_LINK1)을 읽어서 취득하며; 상기 링크 인덱스 정보(BIT_LINK1)에 대응하는 IP 테이블을 액세스하여 해당 IP 테이블의 목적지 IP 어드레스를 읽어내고 해당 목적지 IP 어드레스와 상기 수신한 소오스 IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos3)와, 그 위치에서의 상기 소오스 IP 어드레스의 비트값(bit_value3)을 취득하고; IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러; 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value3)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 IP 어드레스에 대한 정보가 기록된 IP 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 IP 어드레스에 대한 IP 테이블 정보를 기록하며; 상기 해당 하시 테이블의 링크 인덱스 정보에서 지시하는 링크 인덱스를 사용하여 트리 테이블을 액세스해서 상기 소오스 IP 어드레스의 비트값(bit_value2)에 따라서 해당 트리 테이블의 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽의 테이블에서 하위 링크 존재 정보에 하위 링크가 존재하고 있음을 지시하는 정보를 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos3)를 설정하며 링크 인덱스 정보에 상기 트리 인덱스 테이블에서 가져온 트리 인덱스를 설정하여 기록하도록 되어 있는 것이 바람직하다.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시 예에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법에 대하여 상세히 설명한다.
도 1은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 하시(Hash) 테이블의 포맷을 도시한 도면이다.
동 도면에 도시한 바와 같이, 하시(Hash) 테이블은 1비트의 유효 링크 지시 플래그(Bit_New)필드, 1비트의 복수 MAC 링크 지시 플래그(Bit_Col)필드, 6비트의 상위비트위치(Bit_Pos)필드, 12비트의 링크 인덱스(Bit_Link)필드를 포함하여 32비트로 구성된다.
상기 하시(Hash) 테이블의 각 필드에 대한 정의는 다음의 표 1에 표시한다.
[표 1]
필드 명 | 비트 위치 | 설명 |
Bit_New | 31 | 유효 링크 지시 플래그 : -. 현재의 하시 엔트리가 유효한 링크를 갖고 있는 지를 표시하는 플래그. -. Bit_New=0 : 유효한 링크가 있음. -. Bit_New=1 : 유효한 링크가 없음(새로운 MAC 어드레 스 링크 가능) |
Bit_Col | 30 | 복수 MAC 링크 지시 플래그: -. 동일한 하시 키로(hash key)로 2개 이상의 MAC이 링크되어 있을 표시하는 플래그. -. Bit_Col = 0 : 하위 Trie Link가 없음. -. Bit_Col = 1 : 하위 Trie Link가 있음. |
Bit_Pos | 29~24 | 차이 비트 위치 : -. 하위 Trie에서 left인지 right인지 결정하는 bit의 위치. 즉, 두 개의 MAC 어드레스를 상위 비트부터 비교하여 첫번째로 다른 값을 갖는 비트 위치임. |
Rsvd | 23~12 | Reserved Field |
Bit_LINK | 11~0 | 링크 인덱스: 만일 하위 Trie link가 있으면(Bit_Col=1) Trie Table의 Index 값이 있고 하위 Trie link가 없으면(Bit_Col=0) MAC Table의 Index값이 있음. |
한편, 상기한 하시 테이블 포맷을 보면, 당해 분야에 통상의 지식을 가진 자라면 본 발명에 따른 L3 스위치에서 트리 테이블을 이용한 IP 어드레스 탐색 방법에서 채용되는 하시(Hash) 테이블의 포맷도 마찬가지로 구성할 수 있을 것이므로 그에 대한 구체적인 설명은 생략하기로 한다.
도 2는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리(Trie) 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 트리 테이블의 포맷을 도시한 도면이다.
동 도면에 도시한 바와 같이, 트리 테이블은 레프트(Left) 1비트의 하위 링크 유무 지시 플래그(Bit_FLAGL) 필드, 6비트의 레프트 차이 비트 위치(BIT_POSL) 필드, 12비트의 레프트 링크 인덱스(BIT_LINKL) 필드, 1비트의 라이트(Right) 하위 링크 유무 지시 플래그(Bit_FLAGR) 필드, 6비트의 라이트 차이 비트 위치 (BIT_POSR) 필드, 12비트의 라이트 링크 인덱스(BIT_LINKR) 필드를 포함하여 64비트로 구성된다.
상기 트리 테이블의 각 필드에 대한 정의는 다음의 표 2에 표시한다.
[표 2]
필드 명 | 비트 위치 | 설명 |
Rsvd | 63 | Reserved Field |
BIT_FLAGL | 62 | 레프트 하위 링크 유무 지시 플래그 : -.하위 Trie Link가 있는지 없는지 표시하는 플래그. -.BIT_FLAGL=0 : 하위 Trie Link가 없음. -.BIT_FLAGL=1 : 하위 Trie Link가 있음. |
BIT_POSL | 61~56 | 레프트 차이 비트 위치 : -. 하위 Trie에서 Left인지 Right인지 결정하는 bit의 위치. 즉, 두 개의 MAC 어드레스를 상위 비트부터 비교하여 첫번째로 다른 값을 갖는 비트 위치임. |
Rsvd | 55~44 | Reserved Field |
BIT_LINKL | 43~32 | 레프트 링크 인덱스 : -.만일 하위 Trie link가 있으면(BIT_FLAGL=1) Trie Table의 Index 값이 있고, 하위 Trie link가 없으면(BIT_FLAGL=0) Key Table의 Index값이 있음. |
Rsvd | 31 | Reserved Field |
BIT_FLAGR | 30 | 라이트 하위 링크 유무 지시 플래그 : -.하위 Trie Link가 있는지 없는지 표시하는 플래그. -.BIT_FLAGR =0 : 하위 Trie Link가 없음. -.BIT_FLAGR =1 : 하위 Trie Link가 있음. |
BIT_POSR | 29~24 | 라이트 차이 비트 위치 : -.하위 Trie에서 Left인지 Right인지 결정하는 bit의 위치. 즉, 두 개의 MAC 어드레스를 상위 비트부터 비교하여 첫번째로 다른 값을 갖는 비트 위치임. |
Rsvd | 23~12 | Reserved Field |
BIT_LINKR | 11~0 | 라이트 링크 인덱스 : -.만일 하위 Trie link가 있으면(BIT_FLAGR=1) Trie Table의 Index 값이 있고, 하위 Trie link가 없으면(BIT_FLAGR=0) Key Table의 Index값이 있음. |
한편, 상기한 트리 테이블 포맷을 보면, 당해 분야에 통상의 지식을 가진 자라면 본 발명에 따른 L3 스위치에서 트리 테이블을 이용한 IP 어드레스 탐색 방법에서 채용되는 트리 테이블의 포맷도 마찬가지로 구성할 수 있을 것이므로 그에 대한 구체적인 설명은 생략하기로 한다.
도 3은 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 채용되는 맥(MAC) 테이블의 포맷을 도시한 도면이다.
동 도면에 도시한 바와 같이, 트리 테이블은 목적지 64비트의 포트 어드레스 (BIT_DATA)필드, 1비트의 유효 엔트리 지시 플래그(BIT_VALID)필드, 1비트의 스태틱 엔트리 지시 플래그(BIT_STATIC)필드, 1비트의 에이징 엔트리 지시 플래그(BIT_AGE)필드, 48비트의 목적지 맥 어드레스(BIT_MAC)필드를 포함하여 128비트로 구성된다.
상기 맥 테이블의 각 필드에 대한 정의는 다음의 표 3에 표시한다.
[표 3]
필드 명 | 비트 위치 | 설명 |
BIT_DATA | 127~64 | 목적지 포트 어드레스 : _.Destination Port 에 대한 정보 |
BIT_VALID | 63 | 유효 엔트리 지시 플래그 : -.이 Entry가 유효한 Entry인지 아닌지 표시하는 flag. -. BIT_VALID =0 : Invalid Entry -. BIT_VALID =1 : Valid Entry |
BIT_STATIC | 62 | 스태틱 엔트리 지시 플래그 : -.이 Entry를 aging에서 제외되는 Static Entry 임을 표시하는 flag -.BIT_STATIC = 0 : Static Entry Disable -.BIT_STATIC = 1 : Static Entry Enable |
BIT_AGE | 61 | 에이징 엔트리 지시 플래그 : -.일정시간 동안 이 entry를 Access하지 않을 경우 이 플래그는 Aging Routine에 의해 1로 설정되고 다시 일정시간 후에도 이 entry를 Access하지 않을 경우 이 Entry를 Aging 처리한다.(V flag 를 0으로 설정) 만일 이 Entry의 MAC Address와 일치하는 MAC Address가 Search되면 이 플래그는 0으로 설정된다. |
Rsvd | 60~48 | Reserved Field |
BIT_MAC | 47~0 | 목적지 MAC 어드레스 |
한편, 상기한 MAC 테이블 포맷을 보면, 당해 분야에 통상의 지식을 가진 자라면 본 발명에 따른 L3 스위치에서 트리 테이블을 이용한 IP 어드레스 탐색 방법에서 채용되는 IP 테이블의 포맷도 마찬가지로 구성할 수 있을 것이므로 그에 대한 구체적인 설명은 생략하기로 한다.
도 4는 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 사용되는 전체적인 테이블을 도시한 도면이다.
동 도면에 도시한 바와 같이, 소오스 MAC 어드레스가 수신되면 소오스 MAC 어드레스의 하위 24비트를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구하고, 이 하시 인덱스를 이용하여 하시 테이블(Hash Table)을 액세스한다. 맥 어드레스 탐색의 경우에는 하시 테이블(Hash Table)의 링크 인덱스 필드(LINK)를 이용하여 트리 테이블(Trie Left Table)(Trie Right Table) 및/또는 맥 테이블(MAC Table)을 액세스하게 된다. 한편, 러닝(Learning) 및 저장방법인 경우에는 트리 테이블(Trie Left Table)(Trie Right Table)은 트리 인덱스 테이블(Trie Index Table)을 이용하여 트리 인덱스를 구하고 이 트리 인덱스를 이용하여 액세스하며, 맥 테이블(MAC Table)은 맥 인덱스 테이블(MAC Index Table)을 이용하여 맥 인덱스를 구하고 이 맥 인덱스를 이용하여 액세스한다.
한편, 상기한 L2 스위치에서 전체적인 테이블 구성을 보면, 당해 분야에 통상의 지식을 가진 자라면 본 발명에 따른 L3 스위치에서 트리 테이블을 이용한 IP 어드레스 탐색 방법에서 채용되는 전체적인 테이블 구성도 마찬가지로 구성할 수 있을 것이므로 그에 대한 구체적인 설명은 생략하기로 한다.
이하의 설명에서는 L2 스위치 및 L3 스위치에서 트리 테이블을 이용하여 맥 어드레스를 탐색하고 러닝(Learning)에 의한 맥 어드레스 저장방법에 대하여만 설명하지만, L3 스위치에서 트리 테이블을 이용하여 IP어드레스를 탐색하고 IP 어드레스를 저장하는 방법도 당해 분야에 통상의 지식을 가진 자라면 후술하는 맥 어드레스 탐색 방법과 마찬가지의 방법으로 용이하게 실시할 수 있는 것이므로 그에 대한 설명은 생략하기로 한다.
다음으로, 도 5를 참조하여 본 발명에 따른 L2 스위치 및 L3 스위치에서 트리 테이블을 이용한 맥 어드레스 탐색을 설명하기로 한다.
즉, 도면에 도시한 바와 같이, 소오스 맥 어드레스가 L2 스위치 또는 L3 스위치의 수신 버퍼에 "00 01 00 04 02 05", "04 4f 00 02 27 15", "10 47 35 42 66 74", "18 01 24 4f 02 05"의 순으로 순차적으로 수신되어 저장된다고 가정하자.
먼저, 미도시한 컨트롤러에서는 미도시한 수신 버퍼에서 소오스 MAC 어드레스 "00 01 00 04 02 05"를 읽어들여 하위 24비트(즉, 04 02 05)를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구한다. 이때 하시 테이블 인덱스가 "025"라고 하자. 그러면, 하시 테이블 인덱스 "025"를 인덱스로 사용하여 하시 테이블(Hash Table)을 액세스하여 그 인덱스에 해당하는 하시 테이블의 값을 가져온다.
이때, 하이 테이블은, 유효 링크 지시 플래그(Bit_New)필드가 "1"이고 복수 MAC 링크 지시 플래그(Bit_Col)필드가 "0"이며 상위비트위치(Bit_Pos)필드가 "00"이고 링크 인덱스(Bit_Link)필드가 "100"으로 되어 있다. 이는 해당 하시 테이블이 유효 링크를 가지고 있으며 그 MAC 링크는 하나이고 링크 인덱스가 "100"임을 의미한다.
따라서 컨트롤러는 해당 하시 테이블이 지시하는 링크 인덱스인 맥 테이블 인덱스 "100"을 사용하여 해당 인덱스에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 값을 가져오게 된다. 이렇게 하여 현재의 소오스 MAC 어드레스 "00 01 00 04 02 05"에 대한 맥 어드레스 탐색은 종료된다.
그후, 컨트롤러에서는 수신 버퍼에서 다음의 소오스 MAC 어드레스 "04 4f 00 02 27 15"를 읽어들여 하위 24비트(즉, 02 27 15)를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구한다. 이때 하시 테이블 인덱스가 "024"라고 하자. 그러면, 하시 테이블 인덱스 "024"를 인덱스로 사용하여 하시 테이블(Hash Table)을 액세스하여 그 인덱스에 해당하는 하시 테이블의 값을 가져온다.
이때, 하이 테이블은, 유효 링크 지시 플래그(Bit_New)필드가 "1"이고 복수 MAC 링크 지시 플래그(Bit_Col)필드가 "1"이며 상위비트위치(Bit_Pos)필드가 "03"이고 링크 인덱스(Bit_Link)필드가 "0A0"으로 되어 있다. 이는 해당 하시 테이블이 유효 링크를 가지고 있으며 그 MAC 링크는 복수 개이고 링크 인덱스가 "0A0"임을 의미한다.
따라서 컨트롤러는 해당 하시 테이블의 상위 비트 위치(Bit_POS)필드의 "03"은 다음의 소오스 맥 어드레스(10 47 35 412 66 74)와 상위 비트부터 비교하여 첫 번째로 다른 값을 갖는 비트 위치가 4번째 비트임을 의미이므로, 상기 소오스 MAC 어드레스 "04 4f 00 02 27 15"에 대응하는 MAC 테이블의 인덱스 값이 트리 레프트 테이블(Trie Left Table)에 저장되어 있는지 트리 라이트 테이블(Trie Right Table)에 저장되어 있는지를 확인하기 위하여, 현재 소오스 맥 어드레스 "04 4f 00 02 27 15"의 상위 4번째 비트값을 확인한다. 현재 소오스 맥 어드레스의 4번째 비트값이 "0"이므로, 컨트롤러는 링크 인덱스 "0A0"로 지시된 트리 레프트 테이블(Trie Left Table)의 값을 읽어온다.
이때, 트리 레프트 테이블 값은 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드가 "0", 레프트 차이 비트 위치(BIT_POSL)필드가 "00", 레프트 링크 인덱스(BIT_LINKL)필드가 "101"로 되어 있다. 이는 해당 트리 레프트 테이블이 하위 링크를 가지고 있지 않으며 링크 인덱스가 "101"임을 의미한다.
따라서 컨트롤러는 해당 트리 레프트 테이블이 지시하는 링크 인덱스인 맥 테이블 인덱스 "101"을 사용하여 해당 인덱스에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 값을 가져오게 된다. 이렇게 하여 현재 소오스 MAC 어드레스 "04 4f 00 02 27 15"에 대한 맥 어드레스 탐색은 종료된다.
다음으로, 컨트롤러에서는 수신 버퍼에서 다음의 소오스 MAC 어드레스 "10 47 35 42 66 74"를 읽어들여 하위 24비트(즉, 42 66 74)를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구한다. 이때 하시 테이블 인덱스가 "024"라고 하자. 그러면, 하시 테이블 인덱스 "024"를 인덱스로 사용하여 하시 테이블(Hash Table)을 액세스하여 그 인덱스에 해당하는 하시 테이블의 값을 가져온다.
이때, 하이 테이블은, 유효 링크 지시 플래그(Bit_New)필드가 "1"이고 복수 MAC 링크 지시 플래그(Bit_Col)필드가 "1"이며 상위비트위치(Bit_Pos)필드가 "03"이고 링크 인덱스(Bit_Link)필드가 "0A0"으로 되어 있다. 이는 해당 하시 테이블이 유효 링크를 가지고 있으며 그 MAC 링크는 복수 개이고 링크 인덱스가 "0A0"임을 의미한다.
따라서 컨트롤러는 해당 하시 테이블의 상위 비트 위치(Bit_POS)필드의 "03"이므로, 현재의 소오스 MAC 어드레스 "10 47 35 42 66 74"에 대응하는 MAC 테이블의 인덱스 값이 트리 레프트 테이블(Trie Left Table)에 저장되어 있는지 트리 라이트 테이블(Trie Right Table)에 저장되어 있는지를 확인하기 위하여, 현재 소오스 맥 어드레스 "10 47 35 42 66 74"의 상위 4번째 비트값을 확인한다. 현재 소오스 맥 어드레스의 4번째 비트값이 "1"이므로, 컨트롤러는 링크 인덱스 "0A0"로 지시된 트리 라이트 테이블(Trie Right Table)의 값을 읽어온다.
이때, 트리 라이트 테이블 값은 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드가 "1", 라이트 차이 비트 위치(BIT_POSL)필드가 "04", 라이트 링크 인덱스(BIT_LINKR)필드가 "0A1"로 되어 있다. 이는 해당 트리 라이트 테이블이 하위 링크를 가지고 있으며, 현재의 소오스 맥 어드레스와 다음의 소오스 백 어드레스를 상위 비트부터 비교하여 첫 번째로 다른 값을 갖는 비트 위치가 5번째 비트이며, 링크 인덱스가 "0A1"임을 의미한다.
따라서 컨트롤러는 현재 소오스 맥 어드레스 "10 47 35 42 66 74"의 상위 5번째 비트값을 확인한다. 현재 소오스 맥 어드레스의 5번째 비트값이 "0"이므로, 컨트롤러는 링크 인덱스 "0A1"로 지시된 트리 레프트 테이블(Trie Left Table)의 값을 읽어온다. 해당 트리 레프트 테이블 값은 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드가 "0", 레프트 차이 비트 위치(BIT_POSL)필드가 "00", 레프트 링 크 인덱스(BIT_LINKL)필드가 "102"로 되어 있다. 이는 해당 트리 레프트 테이블이 하위 링크를 가지고 있지 않으며 링크 인덱스가 "102"임을 의미한다.
따라서 컨트롤러는 해당 트리 레프트 테이블이 지시하는 링크 인덱스인 맥 테이블 인덱스 "102"를 사용하여 해당 인덱스에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 값을 가져오게 된다. 이렇게 하여 현재 소오스 MAC 어드레스 "10 47 35 42 66 74"에 대한 맥 어드레스 탐색은 종료된다.
다음으로, 컨트롤러에서는 수신 버퍼에서 다음의 소오스 MAC 어드레스 "18 01 24 4f 02 05"를 읽어들여 하위 24비트(즉, 4f 02 05)를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구한다. 이때 하시 테이블 인덱스가 "024"라고 하자. 그러면, 하시 테이블 인덱스 "024"를 인덱스로 사용하여 하시 테이블(Hash Table)을 액세스하여 그 인덱스에 해당하는 하시 테이블의 값을 가져온다.
이때, 하이 테이블은, 유효 링크 지시 플래그(Bit_New)필드가 "1"이고 복수 MAC 링크 지시 플래그(Bit_Col)필드가 "1"이며 상위비트위치(Bit_Pos)필드가 "03"이고 링크 인덱스(Bit_Link)필드가 "0A0"으로 되어 있다. 이는 해당 하시 테이블이 유효 링크를 가지고 있으며 그 MAC 링크는 복수 개이고 링크 인덱스가 "0A0"임을 의미한다.
따라서 컨트롤러는 해당 하시 테이블의 상위 비트 위치(Bit_POS)필드의 "03"이므로, 현재의 소오스 MAC 어드레스 "18 01 24 4f 02 05"에 대응하는 MAC 테이블의 인덱스 값이 트리 레프트 테이블(Trie Left Table)에 저장되어 있는지 트리 라 이트 테이블(Trie Right Table)에 저장되어 있는지를 확인하기 위하여, 현재 소오스 맥 어드레스 "18 01 24 4f 02 05"의 상위 4번째 비트값을 확인한다. 현재 소오스 맥 어드레스의 4번째 비트값이 "1"이므로, 컨트롤러는 링크 인덱스 "0A0"로 지시된 트리 라이트 테이블(Trie Right Table)의 값을 읽어온다.
이때, 트리 라이트 테이블 값은 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드가 "1", 라이트 차이 비트 위치(BIT_POSL)필드가 "04", 라이트 링크 인덱스(BIT_LINKR)필드가 "0A1"로 되어 있다. 이는 해당 트리 라이트 테이블이 하위 링크를 가지고 있으며, 현재의 소오스 맥 어드레스와 다음의 소오스 백 어드레스를 상위 비트부터 비교하여 첫 번째로 다른 값을 갖는 비트 위치가 5번째 비트이며, 링크 인덱스가 "0A1"임을 의미한다.
따라서 컨트롤러는 현재 소오스 맥 어드레스 "18 01 24 4f 02 05"의 상위 5번째 비트값을 확인한다. 현재 소오스 맥 어드레스의 5번째 비트값이 "1"이므로, 컨트롤러는 링크 인덱스 "0A1"로 지시된 트리 라이트 테이블(Trie Right Table)의 값을 읽어온다. 해당 트리 라이트 테이블 값은 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드가 "0", 라이트 차이 비트 위치(BIT_POSR)필드가 "00", 라이트 링크 인덱스(BIT_LINKR)필드가 "103"으로 되어 있다. 이는 해당 트리 라이트 테이블이 하위 링크를 가지고 있지 않으며 링크 인덱스가 "103"임을 의미한다.
따라서 컨트롤러는 해당 트리 레프트 테이블이 지시하는 링크 인덱스인 맥 테이블 인덱스 "103"를 사용하여 해당 인덱스에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 값을 가져오게 된다. 이렇게 하여 현재 소오스 MAC 어드레스 "18 01 24 4f 02 05"에 대한 맥 어드레스 탐색은 종료된다.
한편, 상기한 바와 같은 탐색 방법에 의하여 소오스 맥 어드레스에 대한 목적지 맥 어드레스를 찾지 못하는 경우, 이 소오스 맥 어드레스는 러닝(Learning; 학스)을 수행하여야 한다.
다음으로, 러닝에 의하여 맥 테이블에 목적지 맥 어드레스를 저장하는 방법에 대하여 도 6 내지 도 11을 참조하여 설명한다.
먼저, 맥 어드레스 탐색시에 하시 테이블이 비어 있을 경우에 러닝에 의하여 맥 테이블에 목적지 맥 어드레스를 저장하는 방법에 대하여 도 6 및 도 9를 참조하여 설명한다.
즉, L2 스위치 또는 L3 스위치의 컨트롤러는 소오스 맥 어드레스 및 소오스 포트 어드레스가 수신 버퍼에 수신되면(단계 S10), 상기 수신된 소오스 맥 어드레스 및 소오스 포트 어드레스를 읽어와서 상기 소오스 맥 어드레스(도 9의 "00 01 00 04 02 05")의 하위 24비트("04 02 05")를 이용하여 하시 함수(Hash Fuction)를 돌려서 하시 인덱스(Hash Index)를 구한다(단계 S12). 이때 하시 테이블 인덱스가 "025"라고 하자. 그러면, 하시 테이블 인덱스 "025"를 인덱스로 사용하여 하시 테이블(Hash Table)을 액세스하여 그 인덱스에 해당하는 하시 테이블의 값을 가져와서 확인한다(단계 S14).
이때, 하이 테이블은, 유효 링크 지시 플래그(Bit_New)필드가 "0"이고 복수 MAC 링크 지시 플래그(Bit_Col)필드가 "0"이며 상위비트위치(Bit_Pos)필드가 "00"이고 링크 인덱스(Bit_Link)필드가 "000"으로 되어 있다.
그후 상기 컨트롤러는 해당 하시 테이블의 유효 링크 지시 플래그(Bit_New)필드가 "0"으로 설정되어 있는지를 확인한다(단계 S16).
상기 단계 S16에서 하시 테이블의 유효 링크 지시 플래그(Bit_New)필드가 "0"으로 설정되어 있으면, 상기 컨트롤러는 맥 인덱스 테이블(MAC Index Table)을 액세스하여 맥 인덱스 테이블에서 미사용 맥 인덱스 개수를 카운트한다(단계 S18).
그후, 상기 단계 S18에서 카운트한 미사용 맥 인덱스 개수의 카운트 값이 0보다 큰 지를 확인하고(단계 S20), 그 카운트 값이 0이면 현재 사용 가능한 맥 인덱스가 없는 것이므로(즉, 맥 테이블이 꽉 차있는 것이므로) 미도시한 레지스터에 맥 테이블 충만 에러(MAC Table Full Error) 플래그를 예를 들면 '1'로 설정해 놓고 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 S20에서 카운트 값이 0이 아니면 현재 사용 가능한 맥 인덱스가 있는 것이므로(현재 맥 테이블이 사용 가능한 공간을 가지고 있는 것이므로), 상기 컨트롤러는 상기 맥 인덱스 테이블에서 최상위 맥 인덱스를 읽어온다(단계 S24). 이어, 상기 컨트롤러는 해당 맥 인덱스를 사용하여 맥 테이블을 액세스하여 해당 맥 테이블의 유효 엔트리 지시 플래그(BIT_VALID)필드(도 9의 VF)를 "1"로 설정하고, 목적지 맥 어드레스(BIT_MAC)필드(도 9의 MAC Address)를 "Source MAC Address"(즉, 도 9에서는 "00 01 00 04 02 05")로 설정하며, 목적지 포트 어드레스(BIT_DATA)필드(도 9의 VLAN_ID)를 "Source Port Address"로 설정하고, 에이징 엔트리 지시 플래그(BIT_AGE)를 "0"으로 설정하여 저장한다(단계 S26).
그후, 상기 컨트롤러는 상기 하시 인덱스(도 9에서 "025")를 사용하여 하시 테이블을 액세스하여, 해당 하시 테이블에서 유효 링크 지시 플래그(Bit_New)필드(도 9의 "N")를 "1"로 설정하고, 복수 MAC 링크 지시 플래그(Bit_Col)필드(도 9의 "C")를 "0"으로 설정하며, 차이 비트 위치(BIT_POS)필드(도 9의 "P")를 "0"으로 설정하고, 링크 인덱스(BIT_LINK)필드(도 9의 "LINK")를 상기 맥 인덱스(즉, 도 9에서는 "100")로 설정하여 저장한다(단계 S28). 그후, 상기 컨트롤러는 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 16에서 해당 하시 테이블에서 유효 링크 지시 플래그(Bit_New)필드(도 9의 "N")를 "0"이 아닌 "1"인 경우, 상기 컨트롤러는 단계 S30으로 진행하여 복수 MAC 링크 지시 플래그(BIT_COL)필드(도 9에서는 "C")가 "0"인지를 확인한다.
상기 단계 S30에서 복수 MAC 링크 지시 플래그(BIT_COL)필드(도 9에서는 "C")가 "0"인 것으로 확인된 경우에는 상기 컨트롤러의 제어는 도 7로 진행하고, 복수 MAC 링크 지시 플래그(BIT_COL)필드(도 9에서는 "C")가 "1"인 것으로 확인된 경우에는 상기 컨트롤러의 제어는 도 8a 및 도 8b로 진행한다.
다음으로, 도 7, 도 9 및 도 10을 참조하여, 본 발명에 따른 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 하시 테이블의 링크 값이 맥 테이블을 지시하고 있을 경우의 동작을 상세히 설명하기로 한다.
여기서, 도 9에서 하시 테이블(Hash Table) 및 맥 테이블(MAC Table)이 갱신 저장된 상태(즉, 하시 인데스 025에 대응하는 하시 테이블에서 유효 링크 지시 플래그 필드(N)가 "1", 링크 인덱스 필드(LINK)가 "100"로 저장되어 있고, 맥 인덱스 100에 대응하는 맥 테이블에서도 유효 엔트리 지시 플래그 필드(VF)가 "1", 목적지 맥 어드레스 필드(MAC Address)가 "00 01 00 04 02 05"로 저장되어 있는 상태)라고 가정하고, 이 상태에서 이하에서는 하시 테이블의 링크 값이 맥 테이블을 지시하고 있을 경우의 동작을 설명하기로 한다.
먼저, L2 스위치 또는 L3 스위치의 컨트롤러는 하시 테이블의 링크 인덱스 필드(BIT_LINK)(도 9에서 "LINK")(즉, 도 9에서 "100")를 이용하여 맥 테이블을 액세스하여 해당 맥 테이블의 값을 읽어온다(단계 S32). 여기서, 해당 맥 테이블의 목적지 맥 어드레스는 "00 01 00 04 02 05"로 저장되어 있는 상태이다.
그후, 상기 컨트롤러는 소오스 맥 어드레스(도 10에서 "04 4f 00 02 27 15)와 상기 맥 테이블에서 읽어온 목적지 맥 어드레스(Bit MAC)가 같지 않은지를 확인한다(단계 S34).
상기 단계 S34에서 소오스 맥 어드레스와 목적지 맥 어드레스(Bit MAC)가 같은 것으로 확인되면, 상기 컨트롤러는 단계 S36으로 진행하여 해당 맥 테이블의 유효 엔트리 지시 플래그(BIT_VALID)필드(도 9의 VF)를 "1"로 설정하고, 목적지 맥 어드레스(BIT_MAC)필드(도 9의 MAC Address)를 "Source MAC Address"로 설정하며, 목적지 포트 어드레스(BIT_DATA)필드(도 9의 VLAN_ID)를 "Source Port Address"로 설정하고, 에이징 엔트리 지시 플래그(BIT_AGE)를 "0"으로 설정하여 저장한 후에, 상기한 도 6의 단계 S10으로 진행하여 제어를 수행한다.
한편, 상기 단계 S34에서 소오스 맥 어드레스와 목적지 맥 어드레스(Bit MAC)가 같지 않은 것으로 확인되면(즉, 도 10에서와 같이 소오스 MAC 어드레스와 목적지 MAC 어드레스가 다른 것으로 확인되면), 상기 컨트롤러는 소오스 맥 어드레스("04 4f 00 02 27 15")와 목적지 맥 어드레스(Bit MAC)("00 01 00 04 02 05")를 비교하여 상위 비트부터 첫 번째 다른 비트의 위치(bit_pos1)와 그 위치에서의 소오스 맥 어드레스의 비트값(bit_value1)을 확인하여 취득한다(단계 S38). 여기서, 도 10에서 "MAC Address 비교"에서 알 수 있는 바와 같이 최상위 비트부터 6번째 비트가 상이하고(즉, bit_pos1 = "05"), 그 위치에서의 소오스 맥 어드레스의 비트값은 "1"이다(즉, bit_value1 = "1").
그후, 상기 컨트롤러는 맥 인덱스 테이블을 액세스하여 미사용 맥 인덱스 개수를 카운트하고(단계 S40), 그 카운트 값이 "0"이면 현재 사용 가능한 맥 인덱스가 없는 것이므로(즉, 맥 테이블이 꽉 차있는 것이므로) 단계 S44로 진행하여 미도시한 레지스터에 맥 테이불 충만 에러(MAC Table Full Error) 플래그를 예를 들면 '1'로 설정해 놓고 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 S40에서 카운트 값이 0이 아니면 현재 사용 가능한 맥 인덱스가 있는 것이므로(현재 맥 테이블이 사용 가능한 공간을 가지고 있는 것이므로), 상기 컨트롤러는 상기 맥 인덱스 테이블에서 최상위 맥 인덱스를 읽어온다(단계 S46). 여기서 최상위 맥 인덱스가 "101"이라고 가정하자. 이어, 상기 컨트롤러는 해당 맥 인덱스(즉, "101"를 사용하여 맥 테이블을 액세스하여 해당 맥 테이블의 유효 엔트리 지시 플래그(BIT_VALID)필드(도 10의 VF)를 "1"로 설정하고, 목적지 맥 어드레스(BIT_MAC)필드(도 10의 MAC Address)를 "Source MAC Address"(즉, 도 10에서는 "04 4f 00 02 27 15")로 설정하며, 목적지 포트 어드레스(BIT_DATA)필드( 도 10의 VLAN_ID)를 "Source Port Address"로 설정하고, 에이징 엔트리 지시 플래그(BIT_AGE)를 "0"으로 설정하여 저장한다(단계 S48).
그후, 상기 컨트롤러는 트리 인덱스 테이블(Trie Index Table)을 액세스하여 미사용 트리 인덱스 개수를 카운트하고(단계 S50), 그 카운트 값이 "0"이면 현재 사용 가능한 트리 인덱스가 없는 것이므로(즉, 트리 테이블이 꽉 차있는 것이므로) 단계 S54로 진행하여 미도시한 레지스터에 트리 테이블 충만 에러(Trie Table Full Error) 플래그를 예를 들면 '1'로 설정해 놓고 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 S50에서 카운트 값이 0이 아니면 현재 사용 가능한 트리 인덱스가 있는 것이므로(현재 트리 테이블이 사용 가능한 공간을 가지고 있는 것이므로), 상기 컨트롤러는 상기 트리 인덱스 테이블에서 최상위 트리 인덱스를 읽어온다(단계 S56). 여기서 최상위 트리 인덱스가 "0A0"이라고 가정하자.
이어, 상기 컨트롤러는 트리 레프트 테이블을 액세스할 것인지 또는 트리 라이트 테이블을 액세스할 것인지를 결정하기 위하여, 상기 단계 S38에서 취득한 비트값(bit_value1)이 "0"인지를 확인한다(단계 S52).
상기 단계 S52에서 상기 비트값(bit_value1)이 "0"인 것으로 확인되면, 상기 컨트롤러는 상기 단계 S56에서 취득한 트리 인덱스를 사용하여 트리 레프트 테이블(Trie Left Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드(도 10에서는 "F")를 "0", 레프트 차이 비트 위치(BIT_POSL)필드(도 10에서 "POS")를 "0", 레프트 링크 인덱스(BIT_LINKL) 필드(도 10에서 "LINK")를 "MAC Index"(즉, "101")로 각각 설정하여 저장한다. 이와 아울러, 상기 컨트롤러는 상기 단계 S56에서 취득한 트리 인덱스를 사용하여 트리 라이트 테이블(Trie Right Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드(도 10에서는 "F")를 "0", 라이트 차이 비트 위치(BIT_POSR)필드(도 10에서 "POS")를 "0", 라이트 링크 인덱스(BIT_LINKR)필드(도 10에서 "LINK")를 기존의 하시 테이블에서의 "링크 인덱스(Bit_Link)"(즉, "100"; 도 9 참조)로 각각 설정하여 저장한다. 그후 제어는 단계 S64로 진행한다.
한편, 상기 단계 S52에서 상기 비트값(bit_value1)이 "0"이 아닌 "1"인 것으로 확인되면(도 10과 같은 경우), 상기 컨트롤러는 상기 단계 S56에서 취득한 트리 인덱스를 사용하여 트리 라이트 테이블(Trie Right Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드(도 10에서는 "F")를 "0", 라이트 차이 비트 위치(BIT_POSR)필드(도 10에서 "POS")를 "0", 라이트 링크 인덱스(BIT_LINKR)필드(도 10에서 "LINK")를 "MAC Index"(즉, "101")로 각각 설정하여 저장한다. 이와 아울러, 상기 컨트롤러는 상기 단계 S56에서 취득한 트리 인덱스를 사용하여 트리 레프트 테이블(Trie Left Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드(도 10에서는 "F")를 "0", 레프트 차이 비트 위치(BIT_POSL)필드(도 10에서 "POS")를 "0", 레프트 링크 인덱스(BIT_LINKL)필드(도 10에서 "LINK")를 기존의 하시 테이블에서의 "링크 인덱스(Bit_Link)"(즉, "100"; 도 9 참조)로 각각 설정하여 저장한다(단계 S60). 그후 제어는 단계 S64로 진행한다.
이어, 상기 컨트롤러는 단계 S64에서 상기 하시 인덱스(도 9 및 도 10에서 "025")를 사용하여 하시 테이블을 액세스하여, 해당 하시 테이블에서 유효 링크 지시 플래그(BIT_NEW)필드(도 9 및 도 10의 "N")를 "1"로 설정하고, 복수 MAC 링크 지시 플래그(BIT_COL)필드(도 9 및 도 10의 "C")를 "1"로 설정하며, 차이 비트 위치(BIT_POS)필드(도 9 및 도 10의 "P")를 상기 단계 S38에서 취득한 "bit_pos1"(즉, 도 10에서는 "05")로 설정하고, 링크 인덱스(BIT_LINK)필드(도 9 및 도 10의 "LINK")를 상기 단계 56에서 취득한 트리 인덱스(즉, 도 10에서는 "0A0")로 설정하여 저장한다(단계 S64). 그후, 상기 컨트롤러는 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
다음으로, 도 8a, 도 8b, 도 10 및 도 11을 참조하여, 본 발명에 따른 트리 테이블을 이용한 맥 어드레스 탐색 방법에서 하시 테이블의 링크 값이 트리 테이블을 지시하고 있을 경우의 동작을 상세히 설명하기로 한다.
여기서, 도 10에서 하시 테이블(Hash Table), 트리 레프트 테이블(Trie Left Talee), 트리 라이트 테이블(Trie Right Table) 및 맥 테이블(MAC Table)이 갱신 저장된 상태라고 가정하고, 이 상태에서 이하에서는 하시 테이블의 링크 값이 트리 테이블을 지시하고 있을 경우의 동작을 설명하기로 한다.
먼저, L2 스위치 또는 L3 스위치의 컨트롤러는 하시 테이블의 차이 비트 위치(BIT_POS)필드(도 10 및 도 11에서 "POS")에 설정된 값(bit_pos1)에 해당하는 소 오스 MAC 어드레스(도 11에서는 "00 47 35 42 66 74")의 비트값(bit_value2)(즉, 소오스 어드레스의 최상위비트로부터 6번째 비트값)을 읽어내어 취득한다(단계 S72).
그후, 상기 컨트롤러는 상기 단계 S72에서 취득한 비트값(bit_value2)이 "0"인지를 확인한다(S74).
상기 단계 S74에서 비트값(bit_value2)이 "0"인 것으로 확인되면(도 11의 경우) 상기 컨트롤러는 상기 하시 테이블의 링크 인덱스(BIT_LINK)(도 10 및 도 11에서의 "LINK") 필드에 저장된 링크 인덱스(즉, "0A0")를 이용하여 트리 레프트 테이블(Trie Left Table)을 액세스해서 해당 트리 레프트 테이블을 읽어와서, 레프트 하위 링크 유무 지시 플래그(Bit_FLAGL)필드의 값을 "BIT_FLAG1"로 설정하고, 레프트 차이 비트 위치(BIT_POSL)필드의 값을 "BIT_POS1"로 설정하며, 레프트 링크 인덱스(BIT_LINKL)필드의 값을 "BIT_LINK1"로 설정하고(단계 S78), 다음의 단계 S80으로 진행한다. 즉, 도 10의 경우에는 "BIT_FLAG1" = "0", "BIT_POS1" = "00", "BIT_LINK1" = "100"으로 설정된다.
한편, 단계 S74에서 비트값(bit_value2)이 "0"이 아닌 "1"인 것으로 확인되면 상기 컨트롤러는 상기 하시 테이블의 링크 인덱스(BIT_LINK)(도 10 및 도 11에서의 "LINK") 필드에 저장된 링크 인덱스(즉, "0A0")를 이용하여 트리 라이트 테이블(Trie Right Table)을 액세스해서 해당 트리 라이트 테이블을 읽어와서, 라이트 하위 링크 유무 지시 플래그(Bit_FLAGR)필드의 값을 "BIT_FLAG1"로 설정하고, 라이트 차이 비트 위치(BIT_POSR)필드의 값을 "BIT_POS1"로 설정하며, 라이트 링크 인 덱스(BIT_LINKR)필드의 값을 "BIT_LINK1"로 설정하고(단계 S76), 다음의 단계 S80으로 진행한다. 즉, 도 10의 경우에는 "BIT_FLAG1" = "0", "BIT_POS1" = "00", "BIT_LINK1" = "101"로 설정된다.
그후, 상기 컨트롤러는 상기 단계 S78 또는 단계 S76에서 설정된 "BIT_FLAG1"이 "0"인지를 확인한다(단계 S80).
상기 단계 S80에서 "BIT_FLAG1"이 "0"이 아닌 "1"인 것으로 확인되면, 이 경우는 트리 테이블에 하위 링크 테이블이 존재하는 것이므로, 상기 컨트롤러는 해당 트리 테이블의 필드값들을 원래 상태로 설정해 놓고[즉, 라이트 또는 레프트 하위 링크 유무 지시 플래그(Bit_FLAGR 또는 Bit_FLAGL)필드의 값을 "BIT_FLAG1"로, 라이트 또는 레프트 차이 비트 위치(BIT_POSR 또는 BIT_POSL)필드의 값을 "BIT_POS1"로, 라이트 또는 레프트 링크 인덱스(BIT_LINKR 또는 BIT_LINKL)필드의 값을 "BIT_LINK1"로 설정], 트리 인덱스 카운트 값(trie_cnt)을 "1"만큼 증가 설정한다(단계 S82).
그후, 상기 컨트롤러는 상기 갱신 설정된 트리 인덱스 카운트 값(trie_cnt)이 트리 인덱스 카운트 최대값(TRIE_CNT_MAX)에 도달하였는지를 확인한다(단계 S84).
상기 단계 S84에서 상기 트리 인덱스 카운트 값(trie_cnt)이 트리 인덱스 카운트 최대값(TRIE_CNT_MAX)에 도달하지 않은 것으로 확인되면, 상기 컨트롤러의 제어는 상기한 단계 S72로 되돌아가서 1만큼 증가된 트리 인덱스를 이용한 수속을 이행하는 반면, 상기 트리 인덱스 카운트 값(trie_cnt)이 트리 인덱스 카운트 최대값 (TRIE_CNT_MAX)에 도달한 것으로 확인되면 컨트롤러는 미도시한 레지스터에 트리 인덱스 카운트 오버플로우 에러(TRIE_CNT Overflow Error)를 설정한 후에 상기한 단계 S10으로 되돌아간다.
한편, 상기 단계 S80에서 "BIT_FLAG1"이 "0"인 것으로 확인되면, 이 경우는 트리 테이블에 하위 링크 테이블이 존재하지 않는 것이므로, 상기 컨트롤러는 상기 "BIT_LINK1"(즉, 도 10에서 "100")를 이용하여 맥 테이블을 액세스하여 해당 맥 테이블의 값을 읽어와서 유효 엔트리 지시 플래그(BIT_VALID), 목적지 MAC 어드레스(BIT_MAC) 및 에이징 엔트리 지시 플래그(BIT_AGE)를 확인한다(단계 S88). 여기서, 해당 맥 테이블의 목적지 맥 어드레스(BIT_MAC)는 "00 01 00 04 02 05"로 저장되어 있는 상태이다.
그후, 상기 컨트롤러는 소오스 맥 어드레스(도 11에서 "00 47 35 42 66 74")와 상기 맥 테이블에서 읽어온 목적지 맥 어드레스(Bit MAC)(도 11에서 "00 01 00 04 02 05")가 같지 않은지를 확인한다(단계 S90).
상기 단계 S90에서 소오스 맥 어드레스와 목적지 맥 어드레스(Bit MAC)가 같은 것으로 확인되면, 상기 컨트롤러는 단계 S92로 진행하여 해당 맥 테이블의 유효 엔트리 지시 플래그(BIT_VALID)필드(도 11의 VF)를 "1"로 설정하고, 목적지 맥 어드레스(BIT_MAC)필드(도 10의 MAC Address)를 "Source MAC Address"로 설정하며, 목적지 포트 어드레스(BIT_DATA)필드(도 10의 VLAN_ID)를 "Source Port Address"로 설정하고, 에이징 엔트리 지시 플래그(BIT_AGE)를 "0"으로 설정하여 저장한 후에, 상기한 도 6의 단계 S10으로 진행하여 제어를 수행한다.
한편, 상기 단계 S90에서 소오스 맥 어드레스와 목적지 맥 어드레스(Bit MAC)가 같지 않은 것으로 확인되면(즉, 도 11에서와 같이 소오스 MAC 어드레스와 목적지 MAC 어드레스가 다른 것으로 확인되면), 상기 컨트롤러는 소오스 맥 어드레스("00 47 35 42 66 74")와 목적지 맥 어드레스(Bit MAC)("00 01 00 04 02 05")를 비교하여 상위 비트부터 첫 번째 다른 비트의 위치(bit_pos3)와 그 위치에서의 소오스 맥 어드레스의 비트값(bit_value3)을 확인하여 취득한다(단계 S94). 여기서, 도 11에서 "MAC Address 비교"에서 알 수 있는 바와 같이 최상위 비트부터 10번째 비트가 상이하고(즉, bit_pos3 = "09"), 그 위치에서의 소오스 맥 어드레스의 비트값은 "1"이다(즉, bit_value3 = "1").
그후, 상기 컨트롤러는 맥 인덱스 테이블을 액세스하여 미사용 맥 인덱스 개수를 카운트하고(단계 S96), 그 카운트 값이 "0"이면 현재 사용 가능한 맥 인덱스가 없는 것이므로(즉, 맥 테이블이 꽉 차있는 것이므로) 단계 S100으로 진행하여 미도시한 레지스터에 맥 테이블 충만 에러(MAC Table Full Error) 플래그를 예를 들면 '1'로 설정해 놓고 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 S98에서 카운트 값이 "0"이 아니면 현재 사용 가능한 맥 인덱스가 있는 것이므로(현재 맥 테이블이 사용 가능한 공간을 가지고 있는 것이므로), 상기 컨트롤러는 상기 맥 인덱스 테이블에서 최상위 맥 인덱스를 읽어온다(단계 S102). 여기서 최상위 맥 인덱스가 "102"이라고 가정하자. 이어, 상기 컨트롤러는 해당 맥 인덱스(즉, "102"를 사용하여 맥 테이블을 액세스하여 해당 맥 테이블의 유효 엔트리 지시 플래그(BIT_VALID)필드(도 11의 VF)를 "1"로 설정하고, 목적 지 맥 어드레스(BIT_MAC)필드(도 11의 MAC Address)를 "Source MAC Address"(즉, 도 11에서는 "00 47 35 42 66 74")로 설정하며, 목적지 포트 어드레스(BIT_DATA)필드(도 11의 VLAN_ID)를 "Source Port Address"로 설정하고, 에이징 엔트리 지시 플래그(BIT_AGE)를 "0"으로 설정하여 저장한다(단계 S104).
그후, 상기 컨트롤러는 트리 인덱스 테이블(Trie Index Table)을 액세스하여 미사용 트리 인덱스 개수를 카운트하고(단계 S106~S108), 그 카운트 값이 "0"이면 현재 사용 가능한 트리 인덱스가 없는 것이므로(즉, 트리 테이블이 꽉 차있는 것이므로) 단계 S110으로 진행하여 미도시한 레지스터에 트리 테이블 충만 에러(Trie Table Full Error) 플래그를 예를 들면 '1'로 설정해 놓고 상기한 단계 S10으로 되돌아가서 제어를 수행한다.
한편, 상기 단계 S108에서 카운트 값이 0이 아니면 현재 사용 가능한 트리 인덱스가 있는 것이므로(현재 트리 테이블이 사용 가능한 공간을 가지고 있는 것이므로), 상기 컨트롤러는 상기 트리 인덱스 테이블에서 최상위 트리 인덱스를 읽어온다(단계 S112). 여기서 최상위 트리 인덱스가 "0A1"이라고 가정하자.
이어, 상기 컨트롤러는 트리 레프트 테이블을 액세스할 것인지 또는 트리 라이트 테이블을 액세스할 것인지를 결정하기 위하여, 상기 단계 S94에서 취득한 비트값(bit_value3)이 "0"인지를 확인한다(단계 S114).
상기 단계 S114에서 상기 비트값(bit_value3)이 "0"인 것으로 확인되면, 상기 컨트롤러는 상기 단계 S112에서 취득한 트리 인덱스를 사용하여 트리 레프트 테이블(Trie Left Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 레 트프 하위 링크 유무 지시 플래그(BIT_FLAGL)필드(도 11에서는 "F")를 "0", 레프트 차이 비트 위치(BIT_POSL)필드(도 11에서 "POS")를 "0", 레프트 링크 인덱스(BIT_LINKL)필드(도 11에서 "LINK")를 "MAC Index"로 각각 설정하여 저장한다. 이와 아울러, 상기 컨트롤러는 상기 단계 S112에서 취득한 트리 인덱스를 사용하여 트리 라이트 테이블(Trie Right Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드(도 11에서는 "F")를 "0", 라이트 차이 비트 위치(BIT_POSR)필드(도 11에서 "POS")를 "0", 라이트 링크 인덱스(BIT_LINKR)필드(도 11에서 "LINK")를 상기 단계 S78 또는 S76에서 설정한 "BIT_LINK1"로 각각 설정하여 저장한다. 그후 제어는 단계 S120으로 진행한다.
한편, 상기 단계 S114에서 상기 비트값(bit_value3)이 "0"이 아닌 "1"인 것으로 확인되면(도 11과 같은 경우), 상기 컨트롤러는 상기 단계 S112에서 취득한 트리 인덱스를 사용하여 트리 라이트 테이블(Trie Right Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드(도 11에서는 "F")를 "0", 라이트 차이 비트 위치(BIT_POSR)필드(도 11에서 "POS")를 "0", 라이트 링크 인덱스(BIT_LINKR)필드(도 10에서 "LINK")를 "MAC Index"(즉, "102")로 각각 설정하여 저장한다. 이와 아울러, 상기 컨트롤러는 상기 단계 S112에서 취득한 트리 인덱스를 사용하여 트리 레프트 테이블(Trie Left Table)에서 해당 인덱스에 대응하는 트리 테이블을 액세스해서, 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드(도 11에서는 "F")를 "0", 레프트 차이 비트 위치(BIT_POSL)필드(도 11에서 "POS")를 "0", 레프트 링크 인덱스(BIT_LINKL)필드(도 11에서 "LINK")를 상기 단계 S78 또는 S76에서 설정한 "BIT_LINK1"로 각각 설정하여 저장한다(단계 S116). 그후 제어는 단계 S120으로 진행한다.
이어, 상기 컨트롤러는 단계 S120에서 상기 단계 S72에서 취득한 "bit_value2"의 값이 "0"인지를 확인한다.
상기 단계 S120에서 상기 "bit_value2"의 값이 "0"인 것으로 확인되면, 상기 하시 테이블의 링크 인덱스(BIT_LINK)(즉, 도 11에서는 "0A0")를 이용하여 트리 레프트 테이블을 액세스하여, 해당 트리 테이블의 레프트 하위 링크 유무 지시 플래그(BIT_FLAGL)필드를 "1", 레프트 차이 비트 위치(BIT_POSL)필드를 상기한 단계 S94에서 취득한 "bit_pos3", 레프트 링크 인덱스(BIT_LINKL)필드를 상기 단계 S112에서 취득한 트리 인덱스로 각각 설정하여 저장한다(단계 S124). 그후 상기 컨트롤러의 제어는 상기한 단계 S10으로 되돌아간다.
한편, 상기 단계 S120에서 상기 "bit_value2"의 값이 "0"이 아닌 "1"인 것으로 확인되면, 상기 하시 테이블의 링크 인덱스(BIT_LINK)(즉, 도 11에서는 "0A0")를 이용하여 트리 라이트 테이블을 액세스하여, 해당 트리 테이블의 라이트 하위 링크 유무 지시 플래그(BIT_FLAGR)필드를 "1", 라이트 차이 비트 위치(BIT_POSR)필드를 상기한 단계 S94에서 취득한 "bit_pos3", 라이트 링크 인덱스(BIT_LINKR)필드를 상기 단계 S112에서 취득한 트리 인덱스로 각각 설정하여 저장한다(단계 S122). 그후 상기 컨트롤러의 제어는 상기한 단계 S10으로 되돌아간다.
한편, 상기 특정 실시예에서는 하시 테이블 및 트리 테이블에서 차이 비트 위치를, 두 개의 맥 어드레스를 최상위비트부터 비교하여 첫 번째로 다른 비트에 대한 비트 위치로서 정의하였지만, 최상위비트부터 비교하는 것이 아니라 최하위비트부터 비교하여 첫 번째로 다른 비트에 대한 비트 위치로서 정의하여도 되는 것은 물론이다.
또한, 상기한 특정 실시예에서는 L2 스위치 및 L3 스위치에서 맥 어드레스의 탐색에 대해서만 설명하였지만, 본 발명은 L3 스위치에서 IP 어드레스의 탐색에도 마찬가지의 방식으로 사용할 수 있는 것임은 당해 기술분야에 통상의 지식을 가진 자라면 용이하게 이해할 수 있을 것으로서, 도 1 내지 도 11과 이들 도면과 관련한 설명에서 맥 어드레스를 IP 어드레스로 맥 테이블을 IP 테이블로 맥 인덱스를 IP 인덱스로 바꾸어 놓으면 실질적으로 L3 스위치에서 IP 어드레스의 탐색에 관한 것이 되므로, 그에 대한 도시 및 설명은 생략하였지만, 이도 본 발명의 범주에 속하는 것임은 자명한 것이다.
한편, 본 발명은 상기한 특정 실시예에 한정되는 것이 아니라 본 발명의 요지를 이탈하지 않는 범위 내에서 여러 가지로 변형 및 수정하여 실시할 수 있는 것이며, 이러한 변형 및 수정이 첨부되는 특허청구범위에 포함되는 것이라면 본 발명에 속하는 것이라는 것은 자명한 것이다.
이상 설명한 바와 같이 본 발명에 의하면, L2 스위치 또는 L3 스위치에서 소오스 맥 어드레스 또는 소오스 IP 어드레스를 저장하고 목적지 맥 어드레스 또는 목적지 IP 어드레스를 찾기 위하여 맥 어드레스 또는 IP 어드레스에 해당하는 테이블을 모두 만들어 놓고 맥 어드레스 또는 IP 어드레스를 각 테이블의 인덱스로 사 용하는 방법이 가장 빠른 방법이나 이럴 경우 메모리의 크기는 본 발명에 의한 것보다 수백억 배 큰 것을 사용해야 하는 종래 문제점을 해결하여, 메모리 사이즈를 최소한으로 줄이고 맥 어드레스 또는 IP 어드레스를 저장할 위치를 찾는 시간을 가장 빠르게 하도록 함으로써 L2 스위치 및 L3 스위치의 처리속도를 높이는 효과를 얻을 수 있다.
Claims (8)
- 목적지 맥 어드레스를 저장하는 맥 테이블과, 수신되는 소오스 맥 어드레스에 대하여 각각 상기 맥 테이블의 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로, 복수의 맥 어드레스 링크가 있는지를 지시하는 복수 맥 링크 지시 정보와, 맥 어드레스를 최상위비트 또는 최하위 비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하는 하시 테이블과; 상기 하시 테이블의 복수 맥 링크 지시 정보에서 복수의 맥 어드레스가 링크되어 있음을 지시하는 경우 목적지 맥 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로서 두 개의 트리 레프트 및 라이트 테이블로 구획되어 있으며, 각각의 테이블이 또 다른 하위 링크가 존재하는지를 지시하는 하위 링크 존재 정보와, 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, 맥 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하고 있는 트리 테이블을 포함하는 L2 스위치 및 L3 스위치에서의 맥 어드레스 탐색 방법에 있어서,수신되는 소오스 맥 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블을 참조하여 맥 테이블을 액세스함에 있어서, 해당 하시 테이블의 복수 맥 링크 지시 정보가 복수의 맥 어드레스가 링크되어 있음을 지시하고 있는 경우, 상기 하시 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 하시 테이블의 차이 비트 위치 정보에 근거한 소오스 맥 어드레스의 해당 위치 비트값에 따라서 상기 트리 테이블을 구성하는 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 맥 테이블의 목적지 맥 어드레스를 찾아가되,상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블을 구성하는 하위 링크 존재 정보가 또 다른 하위 링크가 존재하는 것으로 지시하는 경우, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 차이 비트 위치 정보에 근거한 소오스 맥 어드레스의 해당 위치 비트 값에 따라서 상기 트리 테이블을 구성하는 하위 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 하위 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 맥 테이블의 목적지 맥 어드레스를 찾아가는 것을 특징으로 하는 맥 어드레스 탐색 방법.
- 제1항에 있어서,상기 수신되는 소오스 맥 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블의 참조시에 해당 하시 테이블이 비어 있는 경우,맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 맥 링크 지시 정보에 복수 맥 어드레스가 링크되어 있지 않은 것으로 설정하고 차이 비트 위치 정보도 없는 것으로 설정하며 링크 인덱스 정보로서 상기 기록한 해당 맥 테이블의 맥 인덱스를 설정하여 기록하는 것을 특징으로 하는 맥 어드레스 탐색 방법.
- 제1항에 있어서,상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 맥 테이블의 맥 인덱스로 설정되어 있고 이 맥 인덱스에 대응하는 맥 테이블의 목적지 맥 어드레스와 상시 수신한 소오스 맥 어드레스가 같지 않은 경우,상기 소오스 맥 어드레스와 상기 목적지 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos1)와, 그 위치에서의 상기 소오스 맥 어드레스의 비트값(bit_value1)을 취득하고,맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러, 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value1)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 맥 어드레스에 대한 정보가 기록된 맥 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 맥 어드레스에 대한 맥 테이블 정보를 기록하며, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 맥 링크 지시 정보에 복수 맥 어드레스가 링크되어 있는 것으로 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos1)를 설정하며 링크 인덱스 정보로서 상기 기록한 해당 트리 테이블의 트리 인덱스를 설정하여 기록하는 것을 특징으로 하는 맥 어드레스 탐색 방법.
- 제1항에 있어서,상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 트리 테이블의 트리 인덱스로 설정되어 있고 이 트리 인덱스에 대응하는 트리 테이블의 하위 링크 존재 정보가 또 다른 하위 링크가 존재하지 않는 것으로 지시하며 해당 트리 테이블에 설정된 맥 인덱스에 대응하는 맥 테이블의 목적지 맥 어드레스와 상기 수신한 소오스 맥 어드레스가 같지 않은 경우,상기 해당 하시 테이블의 차이 비트 위치 정보에서 지시하는 비트 위치에 대응하는 상기 소오스 맥 어드레스의 비트값(bit_value2)을 취득하고, 그 비트값(bit_value2)에 따라서 상기 해당 하시 테이블의 링크 인덱스 정보에 대응하는 트리 테이블의 트리 레프트 테이블 또는 트리 라이트 테이블에 기록된 하위 링크 존재 정보(BIT_FLAG1)와, 차이 비트 위치 정보(BIT_POS1)와, 링크 인덱스 정보(BIT_LINK1)을 읽어서 취득하며,상기 링크 인덱스 정보(BIT_LINK1)에 대응하는 맥 테이블을 액세스하여 해당 맥 테이블의 목적지 맥 어드레스를 읽어내고 해당 목적지 맥 어드레스와 상기 수신한 소오스 맥 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos3)와, 그 위치에서의 상기 소오스 맥 어드레스의 비트값(bit_value3)를 취득하고,맥 인덱스 테이블에서 미사용 맥 인덱스 중에서 하나의 맥 인덱스를 가져와서 그 맥 인덱스를 사용하여 맥 테이블을 액세스해서, 해당 맥 테이블에 상기 소오스 맥 어드레스에 대한 정보를 기록함과 아울러,트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value3)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 맥 어드레스에 대한 정보가 기록된 맥 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 맥 어드레스에 대한 맥 테이블 정보를 기록하며,상기 해당 하시 테이블의 링크 인덱스 정보에서 지시하는 링크 인덱스를 사용하여 트리 테이블을 액세스해서 상기 소오스 맥 어드레스의 비트값(bit_value2)에 따라서 해당 트리 테이블의 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽의 테이블에서 하위 링크 존재 정보에 하위 링크가 존재하고 있음을 지시하는 정보를 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos3)를 설정하며 링크 인덱스 정보에 상기 트리 인덱스 테이블에서 가져온 트리 인덱스를 설정하여 기록하는 것을 특징으로 하는 맥 어드레스 탐색 방법.
- 목적지 IP 어드레스를 저장하는 IP 테이블과; 수신되는 소오스 IP 어드레스에 대하여 각각 상기 IP 테이블의 목적지 IP 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로, 복수의 IP 어드레스 링크가 있는지를 지시하는 복수 IP 링크 지시 정보와, IP 어드레스를 최상위비트 또는 최하위 비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, IP 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하는 하시 테이블과; 상기 하시 테이블의 복수 IP 링크 지시 정보에서 복수의 IP 어드레스가 링크되어 있음을 지시하는 경우 목적지 IP 어드레스를 대응시켜 인덱싱하기 위한 정보를 저장하기 위한 것으로서 두 개의 트리 레프트 및 라이트 테이블로 구획되어 있으며, 각각의 테이블이 또 다른 하위 링크가 존재하는지를 지시하는 하위 링크 존재 정보와, IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 상이한 비트의 위치를 지시하는 차이 비트 위치 정보와, IP 어드레스를 찾아가기 위한 링크 인덱스 정보를 포함하고 있는 트리 테이블을 포함하는 L3 스위치에서의 IP 어드레스 탐색 방법에 있어서,수신되는 소오스 IP 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블을 참조하여 IP 테이블을 액세스함에 있어서, 해당 하시 테이블의 복수 IP 링크 지시 정보가 복수의 IP 어드레스가 링크되어 있음을 지시하고 있는 경우, 상기 하시 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 하시 테이블의 차이 비트 위치 정보에 근거한 소오스 IP 어드레스의 해당 위치 비트값에 따라서 상기 트리 테이블을 구성하는 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 IP 테이블의 목적지 IP 어드레스를 찾아가되,상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블을 구성하는 하위 링크 존재 정보가 또 다른 하위 링크가 존재하는 것으로 지시하는 경우, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 링크 인덱스 정보에 기재된 트리 테이블 인덱스를 참조하여 트리 테이블을 액세스하고, 상기 참조한 트리 라이트 테이블 또는 트리 레프트 테이블의 차이 비트 위치 정보에 근거한 소오스 IP 어드레스의 해당 위치 비트 값에 따라서 상기 트리 테이블을 구성하는 하위 트리 라이트 및 레프트 테이블 중에서 어느 한쪽 테이블을 참조해가면서, 하위 트리 라이트 테이블 또는 트리 레프트 테이블에서 지시하는 링크 인덱스 정보에 의하여 상기 IP 테이블의 목적지 IP 어드레스를 찾아가는 것을 특징으로 하는 IP 어드레스 탐색 방법.
- 제5항에 있어서,상기 수신되는 소오스 IP 어드레스에 대하여, 하시 함수를 이용하여 하시 인덱스를 취득한 후에 해당 하시 인덱스에 대응하는 하시 테이블의 참조시에 해당 하시 테이블이 비어 있는 경우,IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 IP 링크 지시 정보에 복수 IP 어드레스가 링크되어 있지 않은 것으로 설정하고 차이 비트 위치 정보도 없는 것으로 설정하며 링크 인덱스 정보로서 상기 기록한 해당 IP 테이블의 IP 인덱스를 설정하여 기록하는 것을 특징으로 하는 IP 어드레스 탐색 방법.
- 제5항에 있어서,상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 IP 테이블의 IP 인덱스로 설정되어 있고 이 IP 인덱스에 대응하는 IP 테이블의 목적지 IP 어드레스와 상시 수신한 소오스 IP 어드레스가 같지 않은 경우,상기 소오스 IP 어드레스와 상기 목적지 IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos1)와, 그 위치에서의 상기 소오스 IP 어드레스의 비트값(bit_value1)을 취득하고,IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러, 트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value1)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 IP 어드레스에 대한 정보가 기록된 IP 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 IP 어드레스에 대한 IP 테이블 정보를 기록하며, 상기 해당 하시 테이블을 액세스하여, 해당 하시 테이블의 복수 IP 링크 지시 정보에 복수 IP 어드레스가 링크되어 있는 것으로 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos1)를 설정하며 링크 인덱스 정보로서 상기 기록한 해당 트리 테이블의 트리 인덱스를 설정하여 기록하는 것을 특징으로 하는 IP 어드레스 탐색 방법.
- 제5항에 있어서,상기 하시 인덱스에 대응하는 하시 테이블의 링크 인덱스 정보가 트리 테이블의 트리 인덱스로 설정되어 있고 이 트리 인덱스에 대응하는 트리 테이블의 하위 링크 존재 정보가 또 다른 하위 링크가 존재하지 않는 것으로 지시하며 해당 트리 테이블에 설정된 IP 인덱스에 대응하는 IP 테이블의 목적지 IP 어드레스와 상기 수신한 소오스 IP 어드레스가 같지 않은 경우,상기 해당 하시 테이블의 차이 비트 위치 정보에서 지시하는 비트 위치에 대응하는 상기 소오스 IP 어드레스의 비트값(bit_value2)을 취득하고, 그 비트값(bit_value2)에 따라서 상기 해당 하시 테이블의 링크 인덱스 정보에 대응하는 트리 테이블의 트리 레프트 테이블 또는 트리 라이트 테이블에 기록된 하위 링크 존재 정보(BIT_FLAG1)와, 차이 비트 위치 정보(BIT_POS1)와, 링크 인덱스 정보(BIT_LINK1)을 읽어서 취득하며,상기 링크 인덱스 정보(BIT_LINK1)에 대응하는 IP 테이블을 액세스하여 해당 IP 테이블의 목적지 IP 어드레스를 읽어내고 해당 목적지 IP 어드레스와 상기 수신한 소오스 IP 어드레스를 최상위비트 또는 최하위비트부터 비교하여 첫 번째로 다른 비트 위치(bit_pos3)와, 그 위치에서의 상기 소오스 IP 어드레스의 비트값(bit_value3)를 취득하고,IP 인덱스 테이블에서 미사용 IP 인덱스 중에서 하나의 IP 인덱스를 가져와서 그 IP 인덱스를 사용하여 IP 테이블을 액세스해서, 해당 IP 테이블에 상기 소오스 IP 어드레스에 대한 정보를 기록함과 아울러,트리 인덱스 테이블에서 미사용 트리 인덱스 중에서 하나의 트리 인덱스를 가져와서 그 트리 인덱스를 사용하여 트리 테이블을 액세스하고, 상기 취득한 비트값(bit_value3)에 따라서 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽에는 상기 소오스 IP 어드레스에 대한 정보가 기록된 IP 테이블 정보를 기록하고 그 다른 쪽에는 상기 목적지 IP 어드레스에 대한 IP 테이블 정보를 기록하며,상기 해당 하시 테이블의 링크 인덱스 정보에서 지시하는 링크 인덱스를 사용하여 트리 테이블을 액세스해서 상기 소오스 IP 어드레스의 비트값(bit_value2)에 따라서 해당 트리 테이블의 트리 레프트 테이블 및 트리 라이트 테이블 중에서 한 쪽의 테이블에서 하위 링크 존재 정보에 하위 링크가 존재하고 있음을 지시하는 정보를 설정하고 차이 비트 위치 정보에 상기 취득한 비트 위치(bit_pos3)를 설정하며 링크 인덱스 정보에 상기 트리 인덱스 테이블에서 가져온 트리 인덱스를 설정하여 기록하는 것을 특징으로 하는 IP 어드레스 탐색 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050076620A KR100680527B1 (ko) | 2005-08-22 | 2005-08-22 | 엘투 스위치 및 엘쓰리 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050076620A KR100680527B1 (ko) | 2005-08-22 | 2005-08-22 | 엘투 스위치 및 엘쓰리 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100680527B1 true KR100680527B1 (ko) | 2007-02-09 |
Family
ID=38105836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050076620A KR100680527B1 (ko) | 2005-08-22 | 2005-08-22 | 엘투 스위치 및 엘쓰리 스위치에서 트리 테이블을 이용한 어드레스 탐색 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100680527B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1127320A (ja) | 1997-07-03 | 1999-01-29 | Fujitsu Ltd | パケット中継制御方法,パケット中継装置およびプログラム記憶媒体 |
KR20000013760A (ko) * | 1998-08-13 | 2000-03-06 | 윤종용 | 순회 여분 검사를 이용한 랜 스위치의 맥 주소 해슁 방법 및장치 |
KR20010047546A (ko) * | 1999-11-22 | 2001-06-15 | 윤종용 | 이더넷 스위치에서의 어드레스 서치 장치 및 방법 |
KR20040046424A (ko) * | 2002-11-27 | 2004-06-05 | 한국전자통신연구원 | 3 단계 테이블로 구성된 아이피 주소 룩업 시스템 및 그방법 |
KR20040054110A (ko) * | 2002-12-17 | 2004-06-25 | 한국전자통신연구원 | 튜플 공간 검색 기반의 ip 패킷 분류장치 및 분류방법 |
-
2005
- 2005-08-22 KR KR1020050076620A patent/KR100680527B1/ko not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1127320A (ja) | 1997-07-03 | 1999-01-29 | Fujitsu Ltd | パケット中継制御方法,パケット中継装置およびプログラム記憶媒体 |
KR20000013760A (ko) * | 1998-08-13 | 2000-03-06 | 윤종용 | 순회 여분 검사를 이용한 랜 스위치의 맥 주소 해슁 방법 및장치 |
KR20010047546A (ko) * | 1999-11-22 | 2001-06-15 | 윤종용 | 이더넷 스위치에서의 어드레스 서치 장치 및 방법 |
KR20040046424A (ko) * | 2002-11-27 | 2004-06-05 | 한국전자통신연구원 | 3 단계 테이블로 구성된 아이피 주소 룩업 시스템 및 그방법 |
KR20040054110A (ko) * | 2002-12-17 | 2004-06-25 | 한국전자통신연구원 | 튜플 공간 검색 기반의 ip 패킷 분류장치 및 분류방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7124200B2 (en) | Routing apparatus | |
US7167471B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US8542686B2 (en) | Ethernet forwarding database method | |
US6606681B1 (en) | Optimized content addressable memory (CAM) | |
US7408930B2 (en) | Address learning to enable high speed routing table lookups | |
US7539772B2 (en) | Method for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables | |
US20060122989A1 (en) | Method and data structure for a low memory overhead database | |
US20050171959A1 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
US20090232139A1 (en) | Multiple virtual local area network databases in a switch with a relational lookup engine | |
US6732227B1 (en) | Network translation circuit and method using a segmentable content addressable memory | |
WO1999013587B1 (en) | A high speed cache management unit for use in a bridge/router | |
US6725216B2 (en) | Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
US20100091775A1 (en) | Packet switching system | |
EP3657740A1 (en) | Message forwarding | |
US7392349B1 (en) | Table management within a policy-based routing system | |
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
US7477639B2 (en) | High speed routing table learning and lookup | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
US20110088005A1 (en) | Method and apparatus for configuring a content-addressable memory (cam) design as binary cam or ternary cam | |
US20060123139A1 (en) | Intelligent memory interface | |
US6996664B2 (en) | Ternary content addressable memory with enhanced priority matching | |
CN112637072B (zh) | 一种用于交换芯片地址存储及查找的快速并行电路及方法 | |
US20060274739A1 (en) | Method and apparatus for managing medium access control (MAC) address | |
JP4184723B2 (ja) | 相互接続装置、相互接続装置を有する情報処理装置及び制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130204 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140203 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150203 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |