KR100378599B1 - Routing Table Lookup Using Indirected RAM Indexing - Google Patents

Routing Table Lookup Using Indirected RAM Indexing Download PDF

Info

Publication number
KR100378599B1
KR100378599B1 KR10-2001-0017419A KR20010017419A KR100378599B1 KR 100378599 B1 KR100378599 B1 KR 100378599B1 KR 20010017419 A KR20010017419 A KR 20010017419A KR 100378599 B1 KR100378599 B1 KR 100378599B1
Authority
KR
South Korea
Prior art keywords
address
routing
memory block
routing table
block
Prior art date
Application number
KR10-2001-0017419A
Other languages
Korean (ko)
Other versions
KR20020077686A (en
Inventor
박현
주성순
정영식
이형호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2001-0017419A priority Critical patent/KR100378599B1/en
Publication of KR20020077686A publication Critical patent/KR20020077686A/en
Application granted granted Critical
Publication of KR100378599B1 publication Critical patent/KR100378599B1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Abstract

본 발명은 라우팅 테이블 검색(Lookup)에 관한 것으로, 라우팅 테이블상의 IP 주소들을 프리픽스 길이별로 주기적으로 수집하는 제1 단계; 상기 프리픽스 길이 분포에 기초하여 복수개로 구성될 메모리 블록의 인덱싱 액세스를 최소화 하기 위한 메모리 블록의 인덱스 키 길이를 결정하는 제2 단계; 상기 결정된 인덱스 키 길이에 기초하여, 포인터 또는 목적지 포트 주소를 나타내는 제1 비트 및 최대 오프셋 길이를 나타내는 제2 비트로 구성된 소정 개수의 엔트리를 가지는 복수개의 라우팅 정보 메모리 블록을 구성하는 제3 단계; 외부로부터 입력되는 패킷의 목적지 주소를 상기 인덱스 키 길이에 대응하는 소정 비트수의 복수개의 주소 블록으로 구분하는 제4 단계; 및 상기 구분된 주소 블록에서 지정하는 상기 메모리 블록의 대응하는 엔트리 검색을 통해 라우팅을 수행하는 제5 단계를 포함하여를 포함하여, 복수개의 나누어진 메모리 블록 검색만으로 라우팅을 수행할 수 있고, 메모리 블록을 하드웨어적인 파이프라인 방식으로 구현하여 라우팅 룩업을 완료할 수 있으며, 또한, 라우팅 테이블 검색을 다단계의 메모리 블록으로 나누어 수행함으로써, 실제로 사용되는 메모리의 크기를 줄일 수 있는 효과가 있는 것을 특징으로 한다.The present invention relates to a routing table lookup, comprising: a first step of periodically collecting IP addresses on a routing table by prefix length; Determining an index key length of a memory block for minimizing indexing access of a plurality of memory blocks to be configured based on the prefix length distribution; A third step of configuring a plurality of routing information memory blocks having a predetermined number of entries consisting of a first bit representing a pointer or a destination port address and a second bit representing a maximum offset length based on the determined index key length; Dividing a destination address of a packet input from the outside into a plurality of address blocks having a predetermined number of bits corresponding to the index key length; And a fifth step of performing routing by searching for a corresponding entry of the memory block designated by the divided address block, and performing routing by searching only a plurality of divided memory blocks, It is possible to complete the routing lookup by implementing the hardware pipeline method, and further, it is possible to reduce the size of the memory actually used by dividing the routing table lookup into a multi-level memory block.

Description

주소 메모리 블록의 간섭 인덱싱에 기반한 라우팅 테이블 검색 방법{Routing Table Lookup Using Indirected RAM Indexing}Routing table lookup using indirected RAM indexing based on interference indexing of address memory blocks

본 발명은 인터넷 라우터에서 데이터 패킷을 목적지로 전송하기 위한 경로를 결정하는데 사용되는 라우팅 테이블 검색(Lookup)에 관한 것으로, 특히, 상기 라우팅 테이블을 IP(인터넷 프로토콜) 패킷 주소의 구성에 따라 복수개의 메모리 블록으로 나누어 구성하고, 단계별 간접 인덱싱을 이용하여 IP 패킷의 목적지 인터넷 주소에 따른 해당 경로를 라우팅 테이블로부터 찾아내는 라우팅 테이블 구성 및 검색 방법에 관한 것이다.The present invention relates to a routing table lookup used to determine a path for transmitting a data packet to a destination in an internet router. In particular, the routing table may be configured according to a configuration of an IP (Internet Protocol) packet address. The present invention relates to a routing table configuration and retrieval method for dividing a block into blocks and finding a corresponding path according to a destination internet address of an IP packet from a routing table by using indirect indexing.

통상적으로, 인터넷 등의 네트워크상에서 목적지 인터넷 주소의 검색은 최대 프리픽스 길이 매칭(longest prefix matching) 방식을 기본으로 하며, 본 발명에 따른 라우팅 테이블 검색 방법에서도 이 방식을 사용한다.In general, a search for a destination Internet address on a network such as the Internet is based on a longest prefix matching method, which is also used in the routing table search method according to the present invention.

Lucent Technologies Inc.가 특허권자인 미국 특허 제6067574호 "High Speed Routing Using Compressed Tree Process"에는 최대 프리픽스 길이 매칭 방식을 이용하여 고속의 라우팅을 수행하는 방법이 개시되어 있는데, IP 주소에 대한 최대 프리픽스를 찾기 위해 필요한 라우팅 데이터베이스 구조를 압축된 프리픽스 트리(tree) 구조를 사용하여 최소의 메모리 액세스로 라우팅 룩업을 수행하기 위해, IP 주소의 프리픽스들이 트리 구조로 표현되고 각 노드들은 다음 페이지를 가리키는 NextPagePtr(p)를 가지고 있거나 유효한 프리픽스의 라우팅 정보가 저장되어 있는 장소를 가리키는 NextHopPtr(p)를 이용하여 목적지 포트 정보를 찾는 방식을 사용하고 있다.U.S. Patent No. 6067574, "High Speed Routing Using Compressed Tree Process," by Lucent Technologies Inc., discloses a method for performing high-speed routing using a maximum prefix length matching scheme. Finding the maximum prefix for an IP address In order to perform routing lookups with minimal memory access using the compressed prefix tree structure for the routing database structure required for each, NextPagePtr (p) where the prefixes of the IP addresses are represented in a tree structure and each node points to the next page. We use the method of finding the destination port information by using NextHopPtr (p) which indicates the location where the routing information of the valid prefix or routing information is stored.

이와같이, 목적지 인터넷 주소를 라우팅 테이블에서 검색하는 종래의 방법은 라우팅 테이블 내에서 인터넷 주소와 가장 근접한 목적지로의 경로를 선택할 수 있도록 되어 있으며, 라우팅 테이블의 데이터 구조는 소프트웨어적으로 처리하기에 적합한 형태로 구성된다. 이로 인하여, 라우팅 테이블을 검색하는데 많은 양의 메모리가 필요하게 되며, 파이프라인 형태의 하드웨어 구현이 불가능하여 라우팅 테이블 검색의 고속화가 어렵다는 단점이 있다.As such, the conventional method of retrieving the destination Internet address from the routing table allows the user to select a route to the destination closest to the Internet address in the routing table, and the data structure of the routing table is in a form suitable for software processing. It is composed. As a result, a large amount of memory is required to search the routing table, and it is difficult to speed up the routing table search because it is impossible to implement a hardware in a pipelined form.

본 발명은 상기 문제점을 해결하기 위해 도출된 것으로, 라우팅 테이블을 검색하기 위해 라우팅 테이블상의 프리픽스 정보에 기초하여 복수개의 라우팅 정보 메모리 블록을 구성하고, 각각의 라우팅 정보 메모리 블록이 라우팅 테이블을 인덱싱하도록 구성하여, 목적지 인터넷 주소와 가장 근접한 라우팅 테이블내 주소를 찾을 때까지 라우팅 정보 메모리 블록을 단계별로 간접 인덱싱하므로써, 파이프라인 형태의 하드웨어로 구현이 가능한 인터넷 라우터의 라우팅 테이블 검색 방법을 제공하는데 그 목적이 있다.SUMMARY OF THE INVENTION The present invention is derived to solve the above problem, and constitutes a plurality of routing information memory blocks based on the prefix information on the routing table to search the routing table, and each routing information memory block is configured to index the routing table. By indirectly indexing the routing information memory block step by step until the address in the routing table closest to the destination internet address is found, the object of the present invention is to provide a routing table search method of an internet router that can be implemented in a pipelined hardware. .

도 1 은 본 발명이 적용되는 라우터의 구성도이고,1 is a configuration diagram of a router to which the present invention is applied;

도 2 는 본 발명의 적절한 실시예에 따른 목적지 주소의 구성도이고,2 is a block diagram of a destination address according to an embodiment of the present invention;

도 3 은 본 발명의 적절한 실시예에 따른 메모리 블록 내의 각 엔트리의 구성도이고,3 is a schematic diagram of each entry in a memory block according to a preferred embodiment of the present invention;

도 4 는 본 발명의 적절한 실시예에 다른 라우팅 테이블 구성도이며, 그리고4 is a schematic diagram of a routing table according to a suitable embodiment of the present invention; and

도 5는 본 발명의 적절한 실시예에 따른 목적지 주소에 대한 경로를 검색하는 과정 나타내는 순서도이다.5 is a flowchart illustrating a process of searching for a route to a destination address according to an exemplary embodiment of the present invention.

본 발명의 일실시예에 따른 라우터에 따르면, 라우팅 알고리즘에 의해 수집된 네트워크의 라우팅 정보에 기초하여 각각 소정 개수의 최대 엔트리를 가지는 복수개의 메모리 블록을 구성하는 라우팅 테이블 구성부(11); 상기 구성된 라우팅 메모리 블록을 저장하는 라우팅 정보 메모리부(12); 외부로부터 입력되는 패킷의 프레임을 구분하는 패킷 입력부(13); 상기 패킷 입력부(13)로부터 전달받은 패킷의 목적지 주소를 각각 상기 라우팅 테이블 구성부(11)에서 결정된 최대 엔트리 개수에 대응하는 소정 비트수로 복수개의 주소 블록으로 나누고, 상기 라우팅 정보 메모리부(12)를 검색하여 상기 주소 블록에서 지정하는 메모리 블록의 해당 엔트리의 검색을 통해 상기 입력되는 패킷의 다음 경로를 결정하여 대응하는 패킷 출력부로 전달하는 라우팅 정보 검색부(14); 및 상기 라우팅 정보 검색부(14)로부터 전달받은 패킷을 출력하는 패킷 출력부(14)를 포함하는 것을 특징으로 한다.According to a router according to an embodiment of the present invention, a routing table constructing unit (11) constituting a plurality of memory blocks each having a predetermined number of maximum entries based on routing information of a network collected by a routing algorithm; A routing information memory unit 12 for storing the configured routing memory block; A packet input unit 13 for classifying a frame of a packet input from the outside; The destination address of the packet received from the packet input unit 13 is divided into a plurality of address blocks by a predetermined number of bits corresponding to the maximum number of entries determined by the routing table configuration unit 11, and the routing information memory unit 12 A routing information retrieval unit (14) for retrieving and determining a next path of the input packet by searching for a corresponding entry of a memory block designated by the address block and transferring the received path to a corresponding packet output unit; And a packet output unit 14 for outputting a packet received from the routing information retrieval unit 14.

또한, 본 발명의 더 다른 실시예에 따른 라우팅 테이블 검색 방법에 따르면, 라우팅 테이블상의 IP 주소들을 프리픽스 길이별로 주기적으로 수집하는 제1 단계; 상기 프리픽스 길이 분포에 기초하여 복수개로 구성될 메모리 블록의 인덱싱 액세스를 최소화 하기 위한 메모리 블록의 인덱스 키 길이를 결정하는 제2 단계; 상기 결정된 인덱스 키 길이에 기초하여, 포인터 또는 목적지 포트 주소를 나타내는 제1 비트 및 최대 오프셋 길이를 나타내는 제2 비트로 구성된 소정 개수의 엔트리를 가지는 복수개의 라우팅 정보 메모리 블록을 구성하는 제3 단계; 외부로부터 입력되는 패킷의 목적지 주소를 상기 인덱스 키 길이에 대응하는 소정 비트수의 복수개의 주소 블록으로 구분하는 제4 단계; 및 상기 구분된 주소 블록에서 지정하는 상기 메모리 블록의 대응하는 엔트리 검색을 통해 라우팅을 수행하는 제5 단계를 포함하여 이루어진 것을 특징으로 한다.Further, according to a routing table search method according to another embodiment of the present invention, the first step of periodically collecting the IP address on the routing table for each prefix length; Determining an index key length of a memory block for minimizing indexing access of a plurality of memory blocks to be configured based on the prefix length distribution; A third step of configuring a plurality of routing information memory blocks having a predetermined number of entries consisting of a first bit representing a pointer or a destination port address and a second bit representing a maximum offset length based on the determined index key length; Dividing a destination address of a packet input from the outside into a plurality of address blocks having a predetermined number of bits corresponding to the index key length; And a fifth step of performing routing by searching for a corresponding entry of the memory block designated by the distinguished address block.

이하, 첨부된 도면을 참조하여 본 발명의 적절한 실시예를 단지 예의 방법으로 상세히 설명하도록 하겠다.Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention by way of example only.

도 1은 본 발명이 적용될 수 있는 라우터의 적절한 실시예에 따른 구성도로서, 라우팅 테이블 구성부(11), 라우팅 정보 메모리(12), 인터넷 패킷 입력부(13), 라우팅 정보 검색부(14), 인터넷 패킷 출력부(15)로 구성되어 있다.1 is a block diagram according to a preferred embodiment of the router to which the present invention can be applied, and includes a routing table configuration unit 11, a routing information memory 12, an internet packet input unit 13, a routing information retrieval unit 14, Internet packet output section 15 is configured.

상기 라우터는, 라우팅 테이블에 등재된 인터넷 주소들의 프리픽스 길이별 분포 통계를 주기적으로 수집하는 절차와, 하나의 라우팅 정보 메모리 블록의 최대 엔트리 갯수를 64K 이내로 하며 간접 인덱싱 액세스를 평균적으로 최소화 시킬 수있도록 단계별 메모리 블록의 인덱스 키 길이를 결정하는 절차와, 상기 인덱스 키 길이에 따라 라우팅 정보 메모리 블록을 재 구성하는 절차를 수행하며, 각 절차의 구체적 설명은 후술한다.The router periodically collects distribution statistics of prefix lengths of the Internet addresses listed in the routing table, and sets a maximum number of entries of one routing information memory block to 64K and minimizes indirect indexing access on an average. A procedure of determining an index key length of a memory block and a procedure of reconfiguring a routing information memory block according to the index key length are performed, and a detailed description of each procedure will be described later.

이상과 같이 구성된 라우터는 일반적으로 다음과 같이 동작한다.A router configured as described above generally operates as follows.

라우팅 테이블 구성부(11)는 라우팅 알고리즘에 의해 수집된 라우팅 정보 중 인터넷 프리픽스와 경로 정보를 토대로 라우팅 정보 메모리 블록의 개수를 결정하는 기준인 인덱스 키 길이를 결정한 후, 이에 기초하여 라우팅 정보 메모리 블록을 구성한 후 라우팅 정보 메모리(12)에 입력한다.The routing table configuration unit 11 determines the index key length which is a criterion for determining the number of routing information memory blocks based on the Internet prefix and the route information among the routing information collected by the routing algorithm, and then determines the routing information memory blocks based on the index key length. After the configuration, the data is input to the routing information memory 12.

인터넷 패킷 입력부(13)는 전송매체에 따라 물리적 신호를 추출하고 입력되는 패킷 프레임을 구분한 후, 상기 패킷을 라우팅 정보 검색부(14)로 전달한다.The Internet packet input unit 13 extracts a physical signal according to a transmission medium, classifies an input packet frame, and transfers the packet to the routing information retrieval unit 14.

라우팅 정보 검색부(14)는 상기 패킷의 목적지 주소를 상기 인덱스 키 길이에 기초하여 복수개의 주소 블록으로 나누고, 첫번째 주소 블록부터 순서대로 각 주소 블록에서 지정하는 라우팅 정보 메모리(12)를 검색하여 패킷의 경로를 결정한 후, 해당 경로에 접한 인터넷 패킷 출력부(15)로 전달한다.The routing information retrieval unit 14 divides the destination address of the packet into a plurality of address blocks based on the index key length, searches the routing information memory 12 designated by each address block in order from the first address block, and then the packet. After determining the path of the path, and delivers to the Internet packet output unit 15 in contact with the path.

인터넷 패킷 출력부(15)는 라우팅 정보 검색부(14)로부터 전달받은 패킷을 대응하는 포트로 출력한다.The internet packet output unit 15 outputs the packet received from the routing information retrieval unit 14 to a corresponding port.

도 2는 본 발명에 따라 입력되는 패킷에서 목적지 주소의 구분에 대한 구성도로서, 도면 부호 "21"은 인터넷 주소를 각각의 라우팅 정보 메모리 블록의 인덱스 키 길이 만큼 나누어 주소 블록 a, b, c, d 비트의 길이를 결정한 것이다. 도 2에서는, 목적지 주소가 전체 32 비트인 경우 4개의 주소 블록으로 구분한 예를 보여주고 있는데, 상기 분할된 주소 블록 각각의 길이는 전체 라우팅 엔트리 분포에 의해 결정되며, 최대 16 비트와 최소 4 비트 사이의 길이로 결정하는 것이 적절하다.FIG. 2 is a block diagram illustrating the classification of a destination address in an input packet according to the present invention, and reference numeral “21” denotes an address block a, b, c, divided by an Internet address divided by an index key length of each routing information memory block. The length of the d bits is determined. FIG. 2 shows an example of dividing four address blocks when the destination address is 32 bits in total. The length of each divided address block is determined by the total routing entry distribution, and the maximum 16 bits and the minimum 4 bits are shown. It is appropriate to determine the length between.

도 3 은 본 발명에 따른 정보 메모리 블록을 구성하는 하나의 엔트리를 나타내는 구성도로서, 도 2의 예에서와 같이, 입력되는 IP 주소가 32 비트인 경우, 도면 부호 "31"의 28비트 값은 다음 정보 메모리 블록을 가리키는 포인터 또는 목적지 주소로 가기 위한 포트 주소를 나타내며, 도면부호 "32"는 최대 오프셋 길이를 나타내는 4비트의 값은 상기 "31"의 값이 다음 정보 메모리 블록을 가리키는 포인터일 경우, 다음 메모리 블록을 검색하기 위해 입력 패킷의 목적지 주소에서 필요한 비트의 개수를 나타낸다.FIG. 3 is a block diagram showing one entry constituting an information memory block according to the present invention. As shown in the example of FIG. 2, when an input IP address is 32 bits, a 28-bit value of “31” is represented. Indicates a pointer to a next information memory block or a port address for going to a destination address, and a reference numeral "32" indicates a 4-bit value indicating a maximum offset length when the value of "31" indicates a pointer to a next information memory block. The number of bits required in the destination address of the input packet to retrieve the next memory block.

예를 들어, 최대 오프셋 길이(32)의 4비트 값이 4일 경우, 이전에 메모리 블록의 인덱싱을 위해 사용된 비트의 수 다음에 4개의 비트를 사용하여 다음 메모리 블록을 인덱싱하게 된다. 이 값은 다음 메모리 블록에 연결된 엔트리 항목의 개수를 표시하기도 한다. 예를 들어, 최대 오프셋 길이(32)의 값이 4일 경우, 다음 메모리 블록에 연결된 엔트리 항목의 개수가 24개인 16개의 엔트리를 가진다는 것을 나타낸다. 따라서, 28비트의 값(31)이 다음 정보 메모리 블록을 가리키는 포인터일 경우, 이 값에 입력 패킷의 목적지 주소에서 이전에 메모리 블록 인덱싱을 위해사용된 비트의 수 다음에서부터 최대 오프셋 길이(32)만큼의 비트에 있는 값을 더하면 목적지 주소에 대한 다음 정보 메모리 블록의 위치를 가리키게 된다.For example, if the 4-bit value of the maximum offset length 32 is 4, then the next memory block is indexed using 4 bits after the number of bits previously used for indexing the memory block. This value may also indicate the number of entry items associated with the next memory block. For example, if the value of the maximum offset length 32 is 4, it indicates that the number of entry items connected to the next memory block is 16 entries having 24 items. Thus, if a value of 28 bits 31 is a pointer to the next information memory block, then this value is equal to the maximum offset length 32 after the number of bits previously used for memory block indexing at the destination address of the input packet. Add the value in bits of to point to the location of the next information memory block for the destination address.

도 4는 본 발명에 따른 목적지 주소의 구분에 따른 라우팅 테이블 구성도로서, 메모리 블록을 4단계로 나눈 경우에, 목적지 주소에 해당되는 경로 정보를 각각의 정보 메모리 블록에서 찾아가는 상황을 나타낸 것이다.FIG. 4 is a diagram illustrating a routing table according to the classification of destination addresses according to the present invention. In the case of dividing a memory block into four stages, path information corresponding to a destination address is found in each information memory block.

도 4에 도시된 각각의 메모리 블록의 크기는 도 2에서 목적지 주소를 분할한 비트수에 따라 각각 2a, 2b, 2c, 2d개 씩의 엔트리를 가지게 되며, 각각의 엔트리는 도 3과 같이 구성된다.The size of each memory block shown in FIG. 4 has 2 a , 2 b , 2 c , and 2 d entries, respectively, according to the number of bits divided by the destination address in FIG. 2, and each entry is shown in FIG. 3. It is composed as follows.

이상과 같이 구성된 라우팅 정보 메모리 블록을 통해 입력되는 IP 패킷의 라우팅 절차는 다음과 같다.The routing procedure of an IP packet input through the routing information memory block configured as described above is as follows.

먼저, 입력된 패킷의 목적지 주소에서 도 2의 "a"비트의 값이 도 4의 메모리 블록 1의 인덱스가 되어 해당 엔트리 위치(41)를 가리키게 된다. 이어서, 이 엔트리에 있는 28비트의 값(42)을 검사하여, 이 값이 목적지 포트 주소이면 검색을 완료하며, 이 값이 다음 메모리 블록 2의 주소이면 이 값에 패킷의 목적지 주소에서 a개 비트 수 다음에서부터 뒤의 최대 오프셋 길이 값(43)만큼의 비트에 있는 값을 더하여 다음 메모리 블록 2에 있는 엔트리의 위치(44)로 이동한다. 이후, 최대 메모리 블록 4까지 위의 블록 1에서의 과정(41, 42, 43, 44)을 반복 수행하여 최종목적지 포트 주소 검색을 완료하게 된다.First, the value of the “a” bit of FIG. 2 in the destination address of the input packet becomes the index of the memory block 1 of FIG. 4 to indicate the corresponding entry position 41. It then checks the 28-bit value 42 in this entry and completes the search if this value is the destination port address. If this value is the address of the next memory block 2, this value contains a bit at the destination address of the packet. The value in bits by the maximum offset length value 43 after the number is added to move to the position 44 of the entry in the next memory block 2. Thereafter, the processes 41, 42, 43, and 44 in the above block 1 are repeatedly performed up to the maximum memory block 4 to complete the final destination port address search.

도 5는 본 발명에 따른 간접 인덱싱 방법에 따라 라우팅 테이블을 검색하여 목적지 주소에 대한 경로를 결정하는 과정을 나타내는 순서도이다.5 is a flowchart illustrating a process of determining a path to a destination address by searching a routing table according to the indirect indexing method according to the present invention.

먼저, 패킷 입력부(13)에서 받은 패킷의 목적지 주소 부분을 추출한다(단계 51). 다음으로, 도 4에 도시된 바와 같은 메모리 블록 1에 대한 최대 오프셋 값(43)을 읽어서(단계 52), 목적지 주소에서 최대 오프셋 값만큼의 비트를 읽어서 상기 메모리 블록 1에 대한 인덱스로 사용한다(단계 53). 그리고, 상기 메모리 블록 1에서 인덱싱한 엔트리의 최대 오프셋 값이 0인가를 검사하여(단계 54), "0"이면 메모리 엔트리의 해당 값을 포트 주소로 출력(57)하고 종료하고, 최대 오프셋 값이 "0"이 아니면, 다음 메모리 블록 2의 최대 오프셋 값(46)을 읽은 후(단계 55) 다음 메모리 블록에 대한 주소를 계산(단계 56)하여, 다시 최대 오프셋 값을 검사하는 과정(단계 54)을 반복 수행하여(단계 54, 55, 56), 최종적으로 포트주소를 출력하고(단계 57) 종료한다.First, the destination address portion of the packet received by the packet input unit 13 is extracted (step 51). Next, the maximum offset value 43 for the memory block 1 as shown in FIG. 4 is read (step 52), and the bit as much as the maximum offset value is read from the destination address and used as an index for the memory block 1 ( Step 53). Then, it is checked whether the maximum offset value of the entry indexed in the memory block 1 is 0 (step 54). If "0", the corresponding value of the memory entry is output (57) to the port address and the end is reached. If not, read the maximum offset value 46 of the next memory block 2 (step 55), calculate the address for the next memory block (step 56), and check the maximum offset value again (step 54). Is repeated (steps 54, 55, 56), and finally the port address is output (step 57).

상술한 바와 같이, 본 발명에 따른 라우팅 테이블 검색 방법에 따르면, 메모리 블록을 N단계로 나눈 경우에, 입력된 데이터 패킷의 목적지로 가는 경로를 찾기 위해 최대 N번의 메모리 참조만으로 라우팅 검색을 완료할 수 있다.As described above, according to the routing table retrieval method according to the present invention, when the memory block is divided into N stages, the routing retrieval can be completed with up to N memory references only to find a path to the destination of the input data packet. have.

또한, 본 발명은 파이프라인 방식으로 구성이 가능해 하드웨어적인 파이프라인 방식으로 구현할 경우 한번의 메모리 참조만으로 라우팅 룩업을 완료할 수 있다. 이는 현재 SRAM 의 한 클럭의 속도를 1/10,000,000초 (10 ns)로 정의하면, 1초에 1천만번의 라우팅 룩업을 할 수 있는 속도이다.In addition, the present invention can be configured in a pipelined manner, so when the hardware pipelined scheme is implemented, the routing lookup can be completed with only one memory reference. If you define the speed of one clock in SRAM as 1 / 10,000,000 seconds (10 ns), you can make 10 million routing lookups per second.

또한, 라우팅 테이블 검색을 다단계의 메모리 블록으로 나누어 수행함으로써, 실제로 사용되는 메모리의 크기를 줄일 수 있다. 즉, 첫번째 메모리 블록에 속하는 라우링 엔트리 중에서 최대 프리픽스 길이에 따라서 그 이후에 연결되어 있는 메모리 블록의 갯수와 크기가 결정 되므로 상대적으로 적은 양의 메모리를 필요로 한다.In addition, by performing the routing table lookup divided into a plurality of memory blocks, it is possible to reduce the size of the memory actually used. That is, since the number and size of the memory blocks connected after it are determined according to the maximum prefix length among the routing entries belonging to the first memory block, a relatively small amount of memory is required.

지금까지 설명은 본 발명의 이해를 위해 적절한 실시예에 대한 것으로, 본 발명이 이것으로 제한되는 것은 아니며, 당 기술분야의 통상의 지식을 가진 자에게는 첨부한 특허청구범위의 범위 및 정신을 벗어나지 않고 다양한 수정 및 변형이 가능함은 명백한 것이다.The description so far is directed to the preferred embodiments for the understanding of the invention, and the invention is not limited thereto, and is intended to those skilled in the art without departing from the scope and spirit of the appended claims. It is obvious that various modifications and variations are possible.

Claims (12)

라우팅 알고리즘에 의해 수집된 네트워크의 라우팅 정보에 기초하여 각각 소정 개수의 최대 엔트리를 가지는 복수개의 메모리 블록을 구성하는 라우팅 테이블 구성부(11);A routing table constructing unit (11) for constructing a plurality of memory blocks each having a predetermined number of maximum entries based on routing information of the network collected by the routing algorithm; 상기 구성된 라우팅 메모리 블록을 저장하는 라우팅 정보 메모리부(12);A routing information memory unit 12 for storing the configured routing memory block; 외부로부터 입력되는 패킷의 프레임을 구분하는 패킷 입력부(13);A packet input unit 13 for classifying a frame of a packet input from the outside; 상기 패킷 입력부(13)로부터 전달받은 패킷의 목적지 주소를 각각 상기 라우팅 테이블 구성부(11)에서 결정된 최대 엔트리 개수에 대응하는 소정 비트수로 복수개의 주소 블록으로 나누고, 상기 라우팅 정보 메모리부(12)를 검색하여 상기 주소 블록에서 지정하는 메모리 블록의 해당 엔트리의 검색을 통해 상기 입력되는 패킷의 다음 경로를 결정하여 대응하는 패킷 출력부로 전달하는 라우팅 정보 검색부(14); 및The destination address of the packet received from the packet input unit 13 is divided into a plurality of address blocks by a predetermined number of bits corresponding to the maximum number of entries determined by the routing table configuration unit 11, and the routing information memory unit 12 A routing information retrieval unit (14) for retrieving and determining a next path of the input packet by searching for a corresponding entry of a memory block designated by the address block and transferring the received path to a corresponding packet output unit; And 상기 라우팅 정보 검색부(14)로부터 전달받은 패킷을 출력하는 패킷 출력부(14)를 포함하는 것을 특징으로 하는 라우터.And a packet output unit (14) for outputting the packet received from the routing information retrieval unit (14). 제 1 항에 있어서,The method of claim 1, 상기 라우팅 테이블 구성부(11)는, 라우팅 테이블에 등재된 인터넷 프로토콜(IP) 주소들의 프리픽스별 길이 분포에 기초하여 라우팅 테이블을 복수개의 라우팅 정보 메모리 블록으로 구분할 최적의 인덱스 키를 결정하고, 상기 인덱스 키에 따라 상기 라우팅 정보 메모리 블록을 구성하는 것을 특징으로 하는 라우터.The routing table configuration unit 11 determines an optimal index key for dividing the routing table into a plurality of routing information memory blocks based on the length distribution for each prefix of Internet Protocol (IP) addresses listed in the routing table, and the index. And configure the routing information memory block according to a key. 제 2 항에 있어서,The method of claim 2, 상기 최대 엔트리 개수는 64K인 것을 특징으로 하는 라우터.And the maximum number of entries is 64K. 제 2 항에 있어서,The method of claim 2, 상기 라우팅 테이블 구성부(11)는, 각각의 라우팅 정보 메모리 블록을 구성하는 각각의 엔트리를, 포인터 또는 목적지 포트 주소를 나타내는 제1 비트 및 최대 오프셋 길이를 나타내는 제2 비트로 구성하는 것을 특징으로 하는 라우터.The routing table configuring unit 11 configures each entry constituting each routing information memory block as a first bit indicating a pointer or a destination port address and a second bit indicating a maximum offset length. . 제 4 항에 있어서,The method of claim 4, wherein 입력되는 IP 패킷이 32 비트인 경우, 상기 제1 비트 및 제2 비트는 각각 28비트 및 4비트로 구성하는 것을 특징으로 하는 라우터.When the input IP packet is 32 bits, the first bit and the second bit is composed of 28 bits and 4 bits, respectively. 제 1 항에 있어서,The method of claim 1, 상기 각 메모리 블록은 파이프라인 형태로 연결되도록 구성되는 것을 특징으로 하는 라우터.Each of the memory blocks is configured to be connected in a pipeline form. 제 4 항 또는 제 5 항에 있어서,The method according to claim 4 or 5, 상기 나뉘어진 주소 블록 하나의 길이는 최소 4비트 내지 최대 16비트인 것을 특징으로 하는 라우터.And a length of each of the divided address blocks is at least 4 bits and at most 16 bits. 라우팅 테이블상의 IP 주소들을 프리픽스 길이별로 주기적으로 수집하는 제1 단계;A first step of periodically collecting IP addresses on a routing table for each prefix length; 상기 프리픽스 길이 분포에 기초하여 복수개로 구성될 메모리 블록의 인덱싱 액세스를 최소화 하기 위한 메모리 블록의 인덱스 키 길이를 결정하는 제2 단계;Determining an index key length of a memory block for minimizing indexing access of a plurality of memory blocks to be configured based on the prefix length distribution; 상기 결정된 인덱스 키 길이에 기초하여, 포인터 또는 목적지 포트 주소를 나타내는 제1 비트 및 최대 오프셋 길이를 나타내는 제2 비트로 구성된 소정 개수의 엔트리를 가지는 복수개의 라우팅 정보 메모리 블록을 구성하는 제3 단계;A third step of configuring a plurality of routing information memory blocks having a predetermined number of entries consisting of a first bit representing a pointer or a destination port address and a second bit representing a maximum offset length based on the determined index key length; 외부로부터 입력되는 패킷의 목적지 주소를 상기 인덱스 키 길이에 대응하는 소정 비트수의 복수개의 주소 블록으로 구분하는 제4 단계; 및Dividing a destination address of a packet input from the outside into a plurality of address blocks having a predetermined number of bits corresponding to the index key length; And 상기 구분된 주소 블록에서 지정하는 상기 메모리 블록의 대응하는 엔트리 검색을 통해 라우팅을 수행하는 제5 단계를 포함하여 이루어진 것을 특징으로 하는 라우팅 테이블 검색 방법.And a fifth step of performing routing by searching for a corresponding entry of the memory block designated by the distinguished address block. 제 8 항에 있어서,The method of claim 8, 하나의 라우팅 정보 메모리 블록의 최대 엔트리 개수는 64K로 하는 것을 특징으로 하는 라우팅 테이블 검색 방법.The maximum number of entries in one routing information memory block is 64K. 제 9 항에 있어서,The method of claim 9, 상기 주소 블록 하나의 길이는 최소 4비트 내지 최대 16비트로 구성하는 것을 특징으로 하는 라우팅 테이블 검색 방법.The length of one address block is configured to search the routing table, characterized in that consisting of at least 4 bits and up to 16 bits. 제 8 항에 있어서,The method of claim 8, 상기 제 5 단계는,The fifth step, 첫번째 주소 블록의 비트값을 읽어 첫번째 메모리 블록의 엔트리로 이동하는 제6 단계;A sixth step of reading a bit value of the first address block and moving to an entry of the first memory block; 제6 단계에서 도착한 엔트리의 값이 목적지 포트 주소인지 판단하는 제7 단계;A seventh step of determining whether the value of the entry arrived at the sixth step is a destination port address; 제7 단계 결과, 목적지 포트이면 검색을 완료하고, 목적지 포트가 아니면 상기 상기 첫번째 메모리 블록의 제2 비트값에 두번째 주소 블록의 비트값을 더해 두번째 메모리 블록의 해당 엔트리로 이동하는 제8 단계; 및As a result of the seventh step, if the destination port is completed, the search is completed; otherwise, the eighth step of adding the bit value of the second address block to the second bit block of the first memory block to move to the corresponding entry of the second memory block; And 상기 제8 단계 결과, 목적지 포트가 아닌 경우에 최종 메모리 블록 및 최종 주소 블록까지 상기 제6 단계 내지 제8 단계에 대응하는 절차를 반복 수행하는 제9 단계를 통해 이루어지는 것을 특징으로 하는 라우팅 테이블 검색 방법.As a result of the eighth step, the routing table search method is performed through the ninth step of repeating the procedure corresponding to the sixth to eighth steps to the last memory block and the last address block when the destination port is not the destination port. . 제 11 항에 있어서,The method of claim 11, 상기 제 7 단계는:The seventh step is: 상기 엔트리의 제2 비트값이 "0"인지 판단하여, "0"이면 상기 엔트리의 제1비트값을 목적지 포트 주소로 판단하고, "0"이 아니면 상기 엔트리의 제1 비트값이 목적지 포트 주소가 아닌 것으로 판단하는 것을 특징으로 하는 라우팅 테이블 검색 방법.It is determined whether the second bit value of the entry is "0". If "0", the first bit value of the entry is determined as a destination port address. If not, the first bit value of the entry is a destination port address. Routing table search method characterized in that it is determined that the.
KR10-2001-0017419A 2001-04-02 2001-04-02 Routing Table Lookup Using Indirected RAM Indexing KR100378599B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0017419A KR100378599B1 (en) 2001-04-02 2001-04-02 Routing Table Lookup Using Indirected RAM Indexing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0017419A KR100378599B1 (en) 2001-04-02 2001-04-02 Routing Table Lookup Using Indirected RAM Indexing

Publications (2)

Publication Number Publication Date
KR20020077686A KR20020077686A (en) 2002-10-14
KR100378599B1 true KR100378599B1 (en) 2003-04-03

Family

ID=27699612

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0017419A KR100378599B1 (en) 2001-04-02 2001-04-02 Routing Table Lookup Using Indirected RAM Indexing

Country Status (1)

Country Link
KR (1) KR100378599B1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100459542B1 (en) * 2002-07-02 2004-12-03 삼성전자주식회사 Internet protocol address look-up device
KR100460188B1 (en) * 2002-07-02 2004-12-08 삼성전자주식회사 Internet protocol address look-up method
KR100541846B1 (en) * 2002-11-27 2006-01-11 한국전자통신연구원 Internet Protocol address lookup system based on 3 layer table architecture and method thereof
KR20050066903A (en) 2003-12-27 2005-06-30 한국전자통신연구원 Packet forwarding apparatus and method for address lookup algorithm with three routing step tables in high speed router system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100238425B1 (en) * 1996-12-20 2000-01-15 이계철 Destination address processing apparatus for high-speed message routing
KR20010030607A (en) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 Method and system for fast routing lookups
KR20020016732A (en) * 2000-08-26 2002-03-06 윤종용 Method for foriming database for routing data packet from plural prefix and method for routing and router using the method
KR100346791B1 (en) * 1999-08-20 2002-08-01 한국전자통신연구원 The Method of Lookup Table Management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100238425B1 (en) * 1996-12-20 2000-01-15 이계철 Destination address processing apparatus for high-speed message routing
KR20010030607A (en) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 Method and system for fast routing lookups
KR100346791B1 (en) * 1999-08-20 2002-08-01 한국전자통신연구원 The Method of Lookup Table Management
KR20020016732A (en) * 2000-08-26 2002-03-06 윤종용 Method for foriming database for routing data packet from plural prefix and method for routing and router using the method

Also Published As

Publication number Publication date
KR20020077686A (en) 2002-10-14

Similar Documents

Publication Publication Date Title
US6985483B2 (en) Methods and systems for fast packet forwarding
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
US7415463B2 (en) Programming tree data structures and handling collisions while performing lookup operations
US6067574A (en) High speed routing using compressed tree process
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
US6633953B2 (en) Range content-addressable memory
EP1168723B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US6434144B1 (en) Multi-level table lookup
US7913060B2 (en) Method and apparatus for physical width expansion of a longest prefix match lookup table
KR100586461B1 (en) Method, Hardware Architecture and Recording Medium for Searching IP Address by Using Pipeline Binary Tree
US6792423B1 (en) Hybrid longest prefix match and fixed match searches
EP1045556A2 (en) Forwarding information retrieval technique
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
Tzeng Longest prefix search using compressed trees
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
US20030081554A1 (en) Network address forwarding table lookup apparatus and method
US7085235B2 (en) Method and apparatus for constructing and searching IP address
KR100378599B1 (en) Routing Table Lookup Using Indirected RAM Indexing
JP3569802B2 (en) Routing table search device and search method
US7570644B2 (en) Routing method for a telecommunications network and router for implementing said method
JP3660311B2 (en) Table search apparatus and method, program, and recording medium
KR100364433B1 (en) IP address look-up method using a bit-vector table
JP3795881B2 (en) Table search method and apparatus
EP1164752A1 (en) Method for performing hierarchical address translation

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: 20130304

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee