WO2010000201A1 - 存储、查找路由表的方法及装置 - Google Patents

存储、查找路由表的方法及装置 Download PDF

Info

Publication number
WO2010000201A1
WO2010000201A1 PCT/CN2009/072549 CN2009072549W WO2010000201A1 WO 2010000201 A1 WO2010000201 A1 WO 2010000201A1 CN 2009072549 W CN2009072549 W CN 2009072549W WO 2010000201 A1 WO2010000201 A1 WO 2010000201A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
pointer
level node
level
hash
Prior art date
Application number
PCT/CN2009/072549
Other languages
English (en)
French (fr)
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 华为技术有限公司
Publication of WO2010000201A1 publication Critical patent/WO2010000201A1/zh

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

Definitions

  • the present invention relates to the field of communications technologies, and in particular, to a method and an apparatus for storing and searching a routing table. Background technique
  • Classless Inter-Domain Routing is a relatively common routing table structure.
  • IP Internet Protocol
  • a prefix representation which is usually represented by the IP address of the IP network and a mask identifying its valid bits, such as "ill *" Indicates that the IP address is "111" and the valid digit is three digits.
  • IP Internet Protocol
  • the routing table entries of the network are merged into one path, which is stored as an entry in the routing table, and can be searched according to the path when searching.
  • the basic binary tree search checks 1 bit in one step. If the corresponding address prefix is up to M, the depth of the tree is M. If you check K bits at a time, the depth of the tree can be reduced to M/K, so that the internal nodes of the tree contain a match that increases to a power of 2 to the power of K. Such a tree is called the K power branch tree of 2, and the maximum number of layers of the tree is M/K.
  • K The number of bits checked by the lookup table algorithm at each node is K, which is called the step size of the tree.
  • each node in the tree will contain 2 powers of 3, that is, 8 items, and its structure is shown in Table 2:
  • the prefix match refers to a prefix that matches the entry. For example, the value of "P1" is
  • the value of "P9” is "1000011 *", and the valid value is 7 bits, which is more than twice the node step size "3". Therefore, it is necessary to establish a new level node on the basis of the lower node of the root node.
  • the node "001" stored in “P6” shown in Table 4 can match the first 6 bits of "P9", so the next item in the item
  • the node pointer of the level node is filled in the newly created node pointer.
  • the newly created entry with "1” can match the "P9”
  • the node structure stored in "P9” is as shown in Table 6:
  • each node needs to apply for a fixed-size storage space, and the entries of these nodes do not have a next-level node for most of the time. That is, the Ptr entry is mostly empty. Taking Figure 1 as an example, a total of 29 Ptr entries are empty, which is a waste of memory resources. In most cases, memory resources are very scarce resources, and the actual routing table nodes may be as many as Hundreds, thousands, or more, wasting more memory resources. Summary of the invention
  • the technical problem to be solved by the embodiments of the present invention is to provide a method and a device for forming a routing table, which can To reduce the memory resources occupied by the routing table.
  • an embodiment of the present invention provides a method for storing a routing table, including:
  • the Internet Protocol address to be stored is divided into a node pointer portion of the next level and a code portion of the matching item, which specifically includes:
  • the data of the root node includes a matching item of the root node, a hash function of the root node, and a node pointer of a next level of the root node;
  • the data of the first level node includes an internet protocol address to be stored in the range of the first level node, a hash function of the first level node, and a next level node pointer of the first level node;
  • the next level node pointer of the first level node points to a matching item encoding pointer of the first level node, and the matching item encoding pointer of the first level node points to the matching item encoding part.
  • a method for finding a routing table including:
  • the Internet Protocol address to be searched is searched
  • next-level node pointer Using the found hash function to hash the to-be-checked internet protocol address in the next-level node step range, and using the next-level node pointer and the hash result as an offset to find the next-level node data. ;
  • the matching code is read according to the search result.
  • an apparatus for storing a routing table including:
  • a matching coding unit configured to save a matching part coding part of the routing table
  • a node pointer unit for storing the data of the root node and the data of the first level node, where the first level node is a next level node of the root node;
  • the data of the root node includes a matching item of the root node, and a hash function of the root node a number and a node pointer of the next level of the root node;
  • the data of the first level node includes an internet protocol address to be stored in the range of the first level node, a hash function of the first level node, and a next level node pointer of the first level node;
  • the next level node pointer of the first level node points to a matching item encoding pointer of the first level node, and the matching item encoding pointer of the first level node points to the matching item encoding part.
  • an apparatus for finding a routing table including:
  • a direct search unit configured to search for an internet protocol address according to a length directly stored in a node pointer portion of a next-level storage routing table
  • a first reading unit configured to read the found hash function and a next-level node pointer
  • a hash searching unit configured to use the found hash function to check the internet protocol in the next-level node step range The address is hashed, and the next-level node pointer and the result of the hash are used as an offset to find the next-level node data
  • a second reading unit configured to read the matching item code according to the search result.
  • the embodiment of the present invention separately allocates a storage space for the node pointer portion of the next level of the routing table, the hash result of the IP address is used as the offset address to save the next-level node data, and only needs to be saved.
  • the partial entry related data of the "lower level node pointer" can reduce the storage space allocated for the blank entry by using the technical solution provided by the embodiment of the present invention, and effectively reduce the memory resource occupied by the routing table.
  • FIG. 1 is a schematic diagram of a prior art Multi-Bit Tree
  • FIG. 2 is a number distribution diagram of nodes of a node in the actual routing table
  • FIG. 4 is a structural diagram of a node in a method for storing a routing table according to the present invention
  • FIG. 5 is a storage structure diagram of a first embodiment of a method for storing a routing table according to the present invention
  • FIG. 6 is a flowchart of Embodiment 1 of a method for searching a routing table according to the present invention.
  • the present invention provides a method and apparatus for storing and searching a routing table, which can effectively save memory resources occupied by the routing table.
  • the routing table is divided into two parts, Prefix and Ptr, for storage.
  • Figure 2 is the number distribution diagram of the nodes of the next level in the two actual routing tables.
  • the abscissa is the number of nodes in the next level of the node, and the ordinate is the node.
  • the number of two curves corresponds to two actual routing tables, with a step size of 8.
  • the method embodiment proposes a method of storing a pointer using a hash (HASH) method.
  • the IP of the matching item close to the root node is used according to the actual situation of the routing table.
  • the address is not HASH.
  • the matching range of 0-8 Bit or 0-16Bit is not HASH and is directly stored. This is because the matching of 0-8Bit and even 0-16Bit in the common routing table.
  • the proportion of the space occupied by the pointer part of the next level node is not large. According to the actual situation, it is also possible to select the matching of 0-3Bit and 0-4Bit without performing HASH.
  • next-level node pointer in the directly stored matching item, and the IP address of the matching item pointed to by the next-level node pointer needs to be stored after hashing, and the stored data of the directly stored matching item should include the A hash function for hashing the IP address of the match pointed to by the next-level node pointer.
  • the method for storing the routing table provided by the embodiment of the present invention is far away from the root node according to the actual situation of the routing table.
  • the hashed value is stored with the next-level node pointer. For example, if the selected range is 0-8 or 0-16Bit, the HASH is not stored and stored directly.
  • the IP address of the match after -8 Bit or 0-16Bit is HASH and then stored. Since hashes usually have conflicts, in order to prevent conflicts, they are usually added to the storage structure. Add a number of conflicting items. According to the actual situation, it is better to select 2 or 3 conflicting items to select 3 conflicting items, and the case of the next-level node pointer is taken as an example.
  • the data structure of the hashed value is stored. As shown in Table 7:
  • the entry "Hash Function” stores different hash functions; the entry “IP” is used to store the actual IP address. This is to prevent errors.
  • the conflict of hash functions means that different values may have the same result after hashing with the same hash function. For example, the result obtained by hashing with 0x01110000 and hashing function, 01010011, and 01010111
  • the method for storing a routing table provided by the embodiment of the present invention provides a method for retaining multiple hash functions. When a conflict occurs, other hash functions are selected for use. In order to avoid conflicts, it is still possible to find a mistake when looking for a search.
  • the method for storing a routing table provides a storage IP address after storing a hash.
  • the address of the entry after checking the corresponding value, check the IP address. If the IP address is checked, the certificate is found to be correct.
  • the IP address can take the actual length. For example, 3Bit with a step size of 3Bit and 8Bit with a step size of 8Bit can also be compared with the bit bit that is most likely to have a difference, still with 0x01110000.
  • the hash function can compare the actual IP addresses of the first, fifth, sixth, seventh, and eighth bit bits to reduce the size of the data structure, or use the saved space to store more conflicting items.
  • the specific storage method is illustrated by an example. It is assumed that the length of the routing table to be stored is 32Bit. When storing in the Multi-Bit Tree, the step size is 8, and there are 4 levels.
  • the node structure is shown in Figure 4:
  • the root node 401 can store 28 matching items, wherein only one matching item has a next level node, and the next level node pointer of the matching item points to the first level node 402; the first level node 402 can also store 28 matches, 2 of which have next-level nodes, the next-level node pointers of the 2 matches point to the second-level node 403 and the second-level node 404 respectively; the second-level node 403 can also be stored 28 matches, but none of them has a next-level node, and the second-level node 404 can also store 28 matches, of which only one match has a next-level node, and the next level of the match
  • the node pointer points to the third level node 405; the third level node 405 can also store 28 matches, but none of the matches has a next level node.
  • the first level node 402, the second level node 403, the second level node 404, and the third level node 405 apply for 28 X 4 matching items and reserve space, among which only 3 matches have
  • the next level node only 3 "lower node pointers" entries are not empty, and the space occupied by the "lower node pointer” entries with 28 x 4 - 3 matches is wasted, plus Not all locations have matches for matching items, and the "match" entry is also very wasteful.
  • the routing table is divided into a next-level node pointer portion and a matching item encoding portion;
  • the root node data includes a root node matching item with a next-level node pointer, a root node hash function of the matching item, and a next-level node pointer of the root node;
  • root node hash function of the matching item uses the root node hash function of the matching item to hash the internet protocol address in the range of the first level node step of the matching item, and using the hash result as the offset address in the next level node pointer of the root node Pointing to the location to store the first level node data;
  • the first level node data includes an internet protocol address in a range of a first level node of the matching item, a first level node hash function of the matching item, and a next level node pointer of the first level node;
  • next level node pointer of the first level node points to a matching item encoding pointer of the first level node, and the matching item encoding pointer of the first level node points to the matching item encoding part.
  • the number of stages is N;
  • the Nth node data is also saved in the pointer portion of the next level node
  • the N-th node data is stored in a location pointed by the next-level node pointer;
  • the Nth level node data includes an internet protocol protocol within the range of the Nth node step of the matching item Address, a hash function of the Nth node of the matching item, a next level node pointer of the Nth node; a node pointer of the next level of the Nth node points to a matching coded pointer of the Nth node, a matching item encoding pointer of the Nth level node points to the matching item part;
  • N is an integer greater than or equal to 2.
  • the data of the root node is shown in the dashed box 501.
  • only one matching item in the root node has the next level node. Therefore, in the first embodiment of the method for storing the routing table provided by the present invention, only one matching needs to be stored. "Next level node pointer" of the item.
  • the IP address of 0-8Bit does not need to be hashed, so the data stored in the dotted box 501 is: "match" of the node pointer, "hash function” selected, "lower level node pointer”; wherein “hash function” is a root node hash function for the first level node step of the match Long-range IP address hashing, which is used to actually
  • the corresponding match data can be found.
  • the data in the dashed box 502 is the data of the first level node. According to FIG. 4, there are two matching items in the first level node having the next level node, so the related data of the two matching items are stored in the dotted line box 502.
  • next level node pointer is the next level node matching for storing the first level node
  • the first entry of the related data of the item after hashing the 9-16Bit of the actual IP address of the match, the hash result is used as the offset address, and the match of the offset address in the entry is saved in the table.
  • “Hash 11”, “Hash 12”, “Hash 13” corresponds to the "hash function" entry in Table 7, which is a hash function of the first-level node, and has the following entries in the entry.
  • the 17-24th of the first-level node match hashes three different hash functions, that is, a hash function for hashing the IP address in the range of the second-level node step of the match; " ⁇ 1 ⁇ ,,"IP12",”IP13” corresponds to the "IP” entry in Table 7; if the hash function in the dashed box 501 is used to hash the 9-16th bit with the next-level node match, the offset address is located in this The entry of the entry, and the hash result does not conflict, save the actual IP address of 9-16Bit according to the actual situation.
  • Hash 21 hashes the 17-24Bit of the matching IP address; if there is a conflict, in the conflict order, if it is the first conflict item, Save 9-16Bit of the actual IP address according to the actual situation, or several Bits of 9-16Bit of the actual IP address in "IP22", use "Hash 22" to hash the 17-24Bit of the matching IP address. If it is the second conflict item, save 9-16Bit of the actual IP address according to the actual situation, or several Bits of 9-16Bit of the actual IP address are in "IP23”, and use "Hash 23" to match the IP of the match. The 17-24Bit of the address is hashed.
  • Item data section a child array because all data belong to the same node, all "matching entry pointer of" belonging to the final point matches the coding of the same node.
  • the first-level node information and the corresponding "match”, information can be linked by "match pointer 2".
  • the data in the dashed box 503 is the data of the second-level node. According to FIG. 4, there are two nodes in the second-level node, and one of the nodes has one matching node, so there are two stored in the dotted box 503. The relevant data of the node, but only one of the next-level node pointers points to the data containing the third-level node data.
  • a hash function that is, a hash function for hashing the IP address in the range of the third-level node step of the match; ' ⁇ 3 ⁇ ,, ' ⁇ 32,,, ⁇ 33' corresponds to the "IP" entry in Table 7. If the hash function in the dashed box 501 is used to hash the 17-24th bit of the node pointed to by the next node pointer 2, the offset address is in this entry, and the hash result does not conflict, then Actually save 17-24Bit of the actual IP address, or several Bits of 17-24Bit of the actual IP address in "IP31”, use "Hash 31" for the matching IP Address 24-32Bit hash; if the If there is a conflict, it will be processed in the order of conflict.
  • the hash function in the dashed box 501 is used to hash the 17-24th bit of the node pointed to by the "next node pointer 1", the hash result is not conflicted, and is saved in "hash 41", and According to the actual situation, save 17-24Bit of the actual IP address, or several Bits of 17-24Bit of the actual IP address in "IP41", use "Hash 41" for the matching IP address of 24 -32Bit performs hashing; if there is a conflict, it is processed in conflict order. If it is the first conflicting item, save 17-24Bit of the actual IP address or several Bits of 17-24Bit of the actual IP address according to the actual situation.
  • the data in the dashed box 504 is the data of the third-level node. According to FIG. 4, there is one node in the third-level node, but the node has no next-level node, so the related data of one node is stored in the dashed box 504, and the The address pointed to by the "lower level node pointer" of the node does not include the data of the next level node.
  • the present invention provides an embodiment of a method for searching a routing table.
  • the method for searching the routing table provided by the present invention is to store the routing table in the next-level node pointer portion of the routing table in the method for searching the routing table provided by the present invention, and directly store the pointer portion of the next-level node according to the storage routing table.
  • the matching code is read according to the search result.
  • the first embodiment of the method for searching the routing table provided by the present invention is as shown in FIG. 6:
  • Step 601 According to the directly stored bit length, the IP address to be checked is directly searched.
  • the direct search is performed using the IP address of the corresponding Bit according to the length of the Bit directly stored during storage. For example: When storing, select to directly store the matching of 0-8Bit, then use 0-8Bit of the IP address to be checked to directly search the node pointer part of the next level of the routing table.
  • Step 602 Determine whether it is found, if yes, go to step 603; otherwise, go to step 613.
  • Step 603 Find the next-level matching data according to the found content.
  • the corresponding length IP address is hashed according to the actual step size. For example, when the step size is "8", the 9-16Bit of the IP address is hashed. When the step size is "16", the pair is 17- 32 Bit for hashing, and so on.
  • Step 604 Determine whether it is found, if yes, go to step 605; otherwise, go to step 613.
  • Step 605 Determine the actual IP address that matches the actual IP address in the comparison entry. If yes, go to step 606; otherwise, go to step 613.
  • the actual IP address, or the partial bit bit of the actual IP is saved according to the actual situation, and is used to prevent the error finding situation. This is because there is a possibility of collision when hashing, in step 604.
  • the entry matching the hash result is found, and the result of the search is correct.
  • the IP address corresponding to the hashed result is compared with the IP address corresponding to the found hash result.
  • the actual IP address is compared. If the matching result is correct, the search result is correct, and the process proceeds to step 606; otherwise, the process proceeds to step 613.
  • Step 606 Find the next-level matching data according to the found content.
  • Step 607 Determine whether it is found, if yes, go to step 608; otherwise, go to step 613.
  • Step 608 Determine the actual IP address that matches the actual IP address in the comparison entry. If yes, go to step 609; otherwise, go to step 613.
  • Step 606 to step 608 are basically the same as steps 603 to 605, except that the search object is changed from the first-level node data to the second-level node data, and the number of nodes in the routing table needs to be searched for the corresponding number of times.
  • the routing table contains four levels of nodes. The above steps have already searched for "root node”, “first level node”, “second level node”, and the next step will find "third level node”.
  • Step 609 Find the next-level matching data according to the found content. Read the "hash function" corresponding to the found actual IP address. For example, if the IP address to be checked matches the actual IP address saved in "IP31”, the hash function in "Hash 31" is read. Read the "lower-level node pointer” found, find the child node array storing the next-level node data according to the found "next-level node pointer", and use the read "hash function” according to the actual step size. "Hat the corresponding length IP address and use the hash result as the offset address to find the child node array.
  • Step 610 Determine whether it is found, if yes, go to step 611; otherwise, go to step 613.
  • Step 611 Determine the actual IP address that matches the actual IP address in the comparison entry. If yes, go to step 612; otherwise, go to step 613.
  • Step 612 Read “longest matching prefix” "match pointer”, and read corresponding "match code” according to "match pointer”.
  • the matching data of a node is divided into multiple parts, then the corresponding matching code is also found by referring to the IP to be checked. For example, when the step size is 8, a node needs 255 bits to record the matching of the node, and our structure is 128 bits. In addition, some other related data may need to be recorded, so usually four 128-bit matches are used.
  • the item code storage space records the matching item of the node, and the 255-bit data is divided into four parts for storage. The four storage spaces can be distinguished by using two Bits.
  • Each of the matching items is divided by 4 and 6Bit is left, and the first 2Bit can be As the offset term, according to the previous 2Bit selection matching code storage space for storage, in the search, the first 2Bit is used as the offset address, and the found "match pointer" is found to find the corresponding matching code storage space, and then Find the corresponding matching item in the matching item encoding storage space, for example, 10101101, that is, take 10 as the offset, find the matching part encoding part with the number "10", find the matching item code whose address is "101101", and find the matching code. Return the corresponding longest prefix matching data. If it is not found, return to the previous node to see if there is a longest prefix match. The longest prefix match data is returned, and if not, the node with the longest prefix match is read according to the lookup record.
  • Step 613 According to the "next node pointer" in the upper node, read the “match pointer”, and find the corresponding "match code” according to the "match pointer".
  • step 613 it means that the correct entry is not found in the child node array, that is, the longest prefix of the IP address to be checked matches the node of the current level, and the next level node does not need to be searched.
  • the matching data of a node is divided into multiple parts, at this time, it is also necessary to refer to the IP to be checked to find the corresponding matching code.
  • the step size is 8
  • a node needs 255 bits to record the matching of the node, and our structure is 128 bits.
  • some other related data may need to be recorded, so usually four 128-bit matches are used.
  • the item code storage space records the matching item of the node, and the 255-bit data is divided into four parts for storage.
  • the four storage spaces can be distinguished by using two Bits.
  • Each of the matching items is divided by 4 and 6Bit is left, and the first 2Bit can be As the offset term, according to the first 2Bit selection matching code storage space for storage, in the search, the first 2Bit is used as the offset address, and the found prefix pointer is used to find the corresponding matching code storage space, and then the matching is performed.
  • Find the corresponding matching item in the item encoding storage space for example, 10101101, that is, take 10 as the offset, find the matching part encoding part with the number "10", find the matching item code whose address is "101101", and find the corresponding matching code.
  • the longest prefix matches the data. If it is not found, it returns to the previous node to see if there is a longest prefix match. If there is, the longest prefix match is returned. It is, if not then read the longest prefix match to find records based on the node.
  • a method for storing a routing table including:
  • the Internet Protocol address to be stored is divided into a node pointer portion of the next level and a code portion of the matching item, which specifically includes:
  • the data of the root node includes a matching item of the root node, a hash function of the root node, and a node pointer of a next level of the root node;
  • the data of the first level node includes an internet protocol address to be stored in the range of the first level node, a hash function of the first level node, and a next level node pointer of the first level node;
  • the next level node pointer of the first level node points to a matching item encoding pointer of the first level node, and the matching item encoding pointer of the first level node points to the matching item encoding part.
  • a method for finding a routing table including:
  • the IP address to be searched is searched
  • next-level node pointer Using the found hash function to hash the to-be-checked internet protocol address in the next-level node step range, and using the next-level node pointer and the hash result as an offset to find the next-level node data. ;
  • the matching code is read according to the search result.
  • the above-mentioned storage medium may be a read only memory, a magnetic disk or an optical disk or the like.
  • a matching coding unit configured to save a matching part coding part of the routing table
  • the root node data includes a root node matching item having a node pointer of a next level, and a root node hash function of the matching item , the next level node pointer of the root node;
  • root node hash function of the matching item uses the root node hash function of the matching item to hash the internet protocol address in the range of the first level node step of the matching item, and using the hash result as the offset address in the next level node pointer of the root node Pointing to the location to store the first level node data;
  • the first level node data includes an internet protocol address in a range of a first level node of the matching item, a first level node hash function of the matching item, and a next level node pointer of the first level node;
  • the next-level node pointer of the first-level node points to the matching-encoding pointer of the first-level node, and the matching-encoding pointer of the first-level node points to the matching-encoding part.
  • the next-level node pointer unit is further configured to:
  • the location pointed to by the node pointer stores the Nth node data
  • the Nth node data includes an Internet Protocol address in a range of Nth node steps of the matching item, a hash function of an Nth node of the matching item, and a next level node pointer of the Nth level node;
  • the next-level node pointer of the N-th node points to the matching code encoding pointer of the N-th node, and the matching item encoding pointer of the N-th node points to the matching part;
  • An apparatus embodiment for searching a routing table provided by the present invention includes:
  • a direct search unit configured to search for an IP address according to a length directly stored in a node pointer portion of a next-level storage routing table
  • a first reading unit configured to read the searched hash function and the next-level node pointer
  • a hash searching unit configured to hash the internet protocol address in the range of the to-be-checked step of the next-level node by using the found hash function, and use the result of the next-level node pointer and the hash as a bias Move, find the next level node data;
  • a second reading unit configured to read the matching item code according to the search result.
  • the IP address comparison unit is configured to use the result of the next node pointer and the hash as an offset to find the data of the next-level node, and find the address matching the entry, and compare the actual IP address and the entry.
  • the saved IP address, with a matching IP address informs the successful processing unit that the search is successful. Otherwise, the notification failure processing unit fails to find.
  • the second reading unit includes:
  • a successful processing unit configured to control the first reading unit to read the found hash function and the next-level node pointer when the search succeeds; the hash search unit uses the found hash function to wait for the next-level node
  • the IP address in the range of the step is hashed, and the result of the next node pointer and the hash is used as an offset to search for the next-level node data; until the last-level node is found, the matching pointer is read. Reading a match code according to the match pointer;
  • the failure processing unit is configured to read a matching item pointer in the upper level node data when the search fails, and read the matching item code according to the matching item pointer.
  • the apparatus for storing the routing table and the specific operation mode of the device for searching the routing table provided by the present invention may refer to the method for storing and searching the routing table provided by the present invention described above. It will not be described in detail here.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

存储、 查找路由表的方法及装置
本申请要求于 2008 年 6 月 30 日提交中国专利局、 申请号为 200810125283.7、 发明名称为 "存储、 查找路由表的方法及装置" 的中国专利 申请的优先权, 其全部内容通过引用结合在本申请中。
技术领域
本发明涉及通信技术领域,尤其涉及一种存储、查找路由表的方法及装置。 背景技术
为了在用户众多的互联网络中完成由一地址到另一个地址的路由,通常将 各种传输路径的相关数据存储在一起形成路由表, 供进行路由时查询。
无类型域间路由 (CIDR, Classless Inter-Domain Routing )是一种比较常 用的路由表结构。在使用 CIDR结构形成路由表时,一个网际协议(IP, Internet Protocol ) 网络使用一个前缀代表, 这个前缀通常由 IP网络的 IP地址和和标 识其有效位的掩码复合表示, 例如 "ill *" 表示 IP地址为 "111 " , 有效位为 三位, 在存储时通常使用多比特树( Multi-Bit Tree )的方式进行存储, 将在地 址空间中相互邻近、路由相同的 2的整数次幂个子网的路由表条目合并成一条 路径, 作为一个表项存储于路由表中, 在进行查找时可以依照路径进行查找。
现以实例对存储的方法进行描述, 假设有 9个前缀 "PI" "P2" "P3" "P4" "P5" "P6" "P7" "P8" "P9" , 前缀标号与前缀值之间的关系如表 1所示: 前缀标号 前缀值
P1 *
P2 1 *
P3 00*
P4 101 *
P5 111 *
P6 1000*
P7 11101 *
P8 111001 * P9 1000011*
表 1、 前缀标号与前缀值之间的关系表
基本的二叉树搜索一步检查 1 个比特, 若相应的地址前缀最长为 M, 则 树的深度为 M。 如果一次检查 K个比特, 则树的深度可减少到 M/K, 这样树 的内部结点包含的匹配项增加为 2的 K 次幂。 这样的树被称为 2的 K次幂分 支树, 树的最大层数为 M/K。 查表算法在每个结点处检查的比特数为 K, 也就 被称为树的步长。
假设该 Multi-Bit Tree的步长为 3 , 则树中每个节点将包含 2的 3次幂项, 即 8项, 其结构如表 2所示:
匹配项 下一级节点指针
000
001
010
011
100
101
110
111
表 2、 步长为 3的节点结构
其中前缀匹配项(Prefix )是指能与该项匹配的前缀, 例如, "P1" 的值为
"*" , 说明 "P1" 可以与任何一项匹配, 假若该节点为根节点, 初始记录为空 时, 从 "000" 到 "111" 都是 "P1" 的匹配项; "P2" 的值为 "1*" , 说明 "P2" 的 IP地址为 "1" , 有效位为 1位, 任何以 "1"开头的项都可以与 "P2" 匹配, 假若该节点为根节点, 从 "100" 到 "111" 都是 "P2" 的匹配项, 此时若已存 入 "P1" , 则在存入 "P2" 时, 从 "100" 到 "111" 都将被 "P2" 覆盖; 其它 有效位在 3位以内的前缀 "P3" "P4" "P5"存储方式可以依此类推, "000" "001" 为 "P3" 的匹配项, "101" 为 "P4" 的匹配项, "111" 为 "P5" 的匹配项, 存 入 "ΡΓ, "Ρ2" "Ρ3" "Ρ4" "Ρ5" 的节点结构如表 3所示:
匹配项 下一级节点指针
000 P3 -
001 P3 ―
010 PI ―
on PI ―
100 P2 ―
101 P4 ―
110 P2 ―
111 P5 - 表 3、 存入 "PI" "P2" "P3" "P4" "P5" 的节点结构 表 2、 表 3中 "下一级节点指针(Ptr ),, 一栏存储的是指向下一级节点的 指针, 这是由于在前缀的有效位超过节点步长时, 需要建立下一级节点, 查找 时根据这个指针就可以寻找到下一级节点,
以 "P6" "P7" "P8" "P9" 为例, "P6" 的值为 "1000*" , 说明 "P6" 的 有效值为 4位, 在步长为 3的根节点中寻找不到匹配项, 因此在存入 "P6" 时 需要建立下一级节点,根节点中 "100"与 "P6"的前三位匹配, 因此要在 "100" 的 "下一级节点指针"一栏存入新建立的下一级节点指针, 该新建立的下一级 节点中, 以 "0" 开头的表项都可以与 "P6" 匹配, 存入 "P6" 的节点结构如 表 4所示:
匹配项 下一级节点指针
000 P6 -
001 P6 -
010 P6 -
011 P6 - 100 - -
101 - -
110 - -
111 - - 表 4、 存入 "P6" 的节点结构
"P7" 的值为 "11101 *" , "P8" 的值为 "111001 *" , 其前 3位值相同, 都 是 "111" , 因此可以为 "P7" "P8" 建立一个下一级节点, 在根节点 "111 " 的 "下一级节点指针"一栏存入新建立的下一级节点指针, 该新建立的下一级节 点中, 以 "01 " 开头的 "010" "011" 可与 "P7" 匹配, "001" 可与 "P8" 匹 配, 存入 "P7" "P8" 的节点结构如表 5所示:
匹配项 下一级节点指针
000 - -
001 P8 -
010 P7 -
011 P7 -
100 - -
101 - -
110 - -
111 - - 表 5、 存入 "P7" "P8" 的节点结构
"P9" 的值为 "1000011 *" , 有效值为 7位, 是节点步长 "3" 的 2倍多, 因此在根节点下一级节点的基础上还需要再建立一级新的节点, 建立时, 看现 有的节点有没有可以与其前 6位相匹配的项,若有则将新建立的节点指针填入 该项 "下一级节点指针" 一栏, 若无则在根节点与其前 3位相匹配项的 "下一 级节点指针" 一栏填入新建立的节点指针, 本例中, 表 4所示存入 "P6" 的 节点 "001" 可与 "P9" 前 6位匹配, 因此在该项的 "下一级节点指针" 一栏 填入新建立的节点指针, 新建立的项以 "1" 开头的表项都可以与 "P9" 匹配, 存入 "P9" 的节点结构如表 6所示:
匹配项 下一级节点指针
000 - -
001 - -
010 - -
011 - -
100 P9 -
101 P9 -
110 P9 -
111 P9 - 表 6、 存入 "P9" 的节点结构
至此, "PI" "P2" "P3" "P4" "P5" "P6" "P7" "P8" "P9" 均已存入步长 为 3的 Multi-Bit Tree, 该 Multi-Bit Tree完整结构如图 1所示, 包括:
相当于表 3所示节点的根节点、 相当于表 4所示节点的节点 1、 相当于表 5所示节点的节点 2、 相当于表 6所示节点的节点 3。
在对现有技术的研究和实践过程中, 发明人发现现有技术存在以下问题: 每一个节点都需要申请固定大小的存储空间,而这些节点的表项大部分时 候都没有下一级节点, 即 Ptr表项多数为空, 以图 1为例, 共有 29个 Ptr表项 为空, 非常浪费内存资源, 而在多数时候内存资源都是非常紧缺的资源, 实际 中的路由表节点可能多达上百、 上千、 或更多个, 浪费内存资源就更多了。 发明内容
本发明实施例要解决的技术问题是提供一种形成路由表的方法及装置,可 以减少路由表占用的内存资源。
为解决上述技术问题, 本发明实施例一方面,提供了一种存储路由表的方 法, 包括:
将待存储网际协议地址分为下一级节点指针部分和匹配项编码部分保存, 具体包括:
在所述下一级节点指针部分保存根节点的数据和第一级节点的数据,所述 第一级节点是所述根节点的下一级节点;
其中, 所述根节点的数据包括所述根节点的匹配项, 所述根节点的哈希函 数和所述根节点的下一级节点指针;
使用所述根节点的哈希函数对所述第一级节点步长范围内的待存储网际 协议地址进行哈希, 以哈希结果作为偏移地址,在所述根节点的下一级节点指 针偏移所述偏移地址的位置存储所述第一级节点的数据;
所述第一级节点的数据包括所述第一级节点步长范围内的待存储网际协 议地址, 所述第一级节点的哈希函数和所述第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针 ,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
另一方面, 提供了一种查找路由表的方法, 包括:
根据存储路由表的下一级节点指针部分直接存储的长度,取待查网际协议 地址进行查找;
读取查找到的哈希函数、 下一级节点指针;
使用查找到的哈希函数对下一级节点步长范围内待查网际协议地址进行 哈希,使用所述下一级节点指针及所述哈希的结果作为偏移, 查找下一级节点 数据;
根据所述查找结果读取匹配项编码。
另一方面, 提供了一种存储路由表的装置, 包括:
匹配项编码单元, 用于保存路由表的匹配项编码部分;
下一级节点指针单元, 用于保存根节点的数据和第一级节点的数据, 所述 第一级节点是所述根节点的下一级节点;
其中, 所述根节点的数据包括所述根节点的匹配项, 所述根节点的哈希函 数和所述根节点的下一级节点指针;
使用所述根节点的哈希函数对所述第一级节点步长范围内的待存储网际 协议地址进行哈希, 以哈希结果作为偏移地址,在所述根节点的下一级节点指 针偏移所述偏移地址的位置存储所述第一级节点的数据;
所述第一级节点的数据包括所述第一级节点步长范围内的待存储网际协 议地址, 所述第一级节点的哈希函数和所述第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
另一方面, 提供了一种查找路由表的装置, 包括:
直接查找单元,用于根据存储路由表的下一级节点指针部分直接存储的长 度, 取待查网际协议地址进行查找;
第一读取单元, 用于读取查找到的哈希函数、 下一级节点指针; 哈希查找单元,用于使用查找到的哈希函数对下一级节点步长范围内待查 网际协议地址进行哈希, 使用所述下一级节点指针及所述哈希的结果作为偏 移, 查找下一级节点数据;
第二读取单元, 用于根据所述查找结果读取匹配项编码。
由以上技术方案可以看出,由于本发明实施方式为路由表的下一级节点指 针部分单独分配存储空间, 使用 IP地址的哈希结果作为偏移地址保存下一级 节点数据, 只需要保存存在 "下一级节点指针" 的部分表项相关数据, 因此使 用本发明实施方式提供的技术方案可以减少为空白表项分配的存储空间,有效 减少路由表占用的内存资源。
附图说明
图 1为现有技术 Multi-Bit Tree示意图;
图 2为两个实际中的路由表中节点的下一级节点的数量分布图; 图 4为本发明提供的存储路由表的方法实施例中节点结构图;
图 5为本发明提供的存储路由表的方法实施例一的存储结构图; 图 6为本发明提供的查找路由表的方法实施例一流程图。
具体实施方式 本发明提供了一种存储、 查找路由表的方法及装置, 可以有效地节省路由 表占用的内存资源。
在本发明提供的存储路由表的方法实施例中, 将路由表分为 Prefix和 Ptr 两个部分分别进行存储。
在对目前常见路由表的研究中发现,有下一级节点的且下一级节点为树节 点的节点在整个路由表中所占比例非常少,这类节点的下一级节点数目大部分 情况下不会大于 64个。 现以两个实际中的路由表进行说明, 图 2是两个实际 中的路由表中节点的下一级节点的数量分布图 ,横坐标是节点的下一级节点的 数目, 纵坐标为节点的数量, 两条曲线分别对应两个实际中的路由表, 步长为 8。
由图 2可以看出大量的节点都只有一个或两个下一级节点,下一级节点多 于 5个的节点所占比例非常少, 在此基础上, 本发明实施例提供的存储路由表 的方法实施例提出了使用哈希 (HASH )方式存储指针的方法。
由于靠近根节点的匹配项有下一级节点指针的可能性比较大,因此本发明 实施例提供的存储路由表的方法实施例中,按照路由表的实际情况对靠近根节 点的匹配项的 IP地址不进行 HASH, 通常选择的范围为 0-8 Bit或 0-16Bit的 匹配项不进行 HASH, 直接进行存储, 这是由于在常见的路由表中, 0-8Bit、 甚至 0-16Bit的匹配项及其下一级节点指针部分占用的空间所占比例并不大, 根据实际情况, 选择 0-3Bit、 0-4Bit的匹配项不进行 HASH也是可以的。 在直 接存储的匹配项存在下一级节点指针,且该下一级节点指针指向的匹配项的 IP 地址需要经过哈希后存储的 ,该直接存储的匹配项的保存数据中就应当包含该 哈希函数, 该哈希函数用于对该下一级节点指针指向的匹配项的 IP地址进行 哈希。
由于离根节点较远的匹配项没有下一级节点指针的可能性比较大,因此本 发明实施例提供的存储路由表的方法实施例中,按照路由表的实际情况对离根 节点较远的匹配项的 IP地址进行 HASH之后, 存储哈希后的值与下一级节点 指针, 例如, 假如选择的范围为 0-8或 0-16Bit的匹配项不进行 HASH, 直接 进行存储, 则将 0-8 Bit或 0-16Bit之后的匹配项的 IP地址进行 HASH之后, 再进行存储。 由于哈希通常会存在冲突, 为了防止冲突, 通常在存储结构中增 加若干个冲突项, 根据实际情况, 以选 2个、 或 3个冲突项为宜, 以选择 3 个冲突项, 且有下一级节点指针的情况为例,存储哈希后数值的数据结构如表 7所示:
哈希函数( Hash Function ) IP Hash Function IP Hash Function IP 下一级节点指针
表 7、 存储哈希后数值的数据结构
其中, 表项 "Hash Function" 存放的是不同的哈希函数; 表项 "IP" 是用 来存储实际 IP地址的, 这是为了防止出现找错的情况。 哈希函数的冲突, 既 是指不同的值在使用同一哈希函数哈希后有可能出现相同结果, 例如, 以与 0x01110000相与为哈希函数, 01010011、 和 01010111在进行哈希后得到的结 果都是 "101" ,为了防止冲突,本发明实施例提供的存储路由表的方法实施例, 给出了保留多个哈希函数的方法,在出现冲突时, 选择使用其他的哈希函数进 行哈希以避免冲突, 但是找查找时, 仍然有可能找错, 为防止找错, 本发明实 施例提供的存储路由表的方法实施例,在存储哈希后数值的数据结构给出了存 储实际 IP地址的表项, 查找到对应的值后再核对 IP地址, IP地址核对通过则 证明查找正确。 根据实际情况, IP地址可以取实际的长度, 例如, 步长为 3Bit 的取 3Bit,步长为 8Bit的取 8Bit,也可以取最可能存在差异的 Bit位进行比较, 仍以与 0x01110000相与为哈希函数为例, 就可以取第 1、 5、 6、 7、 8位 Bit 位的实际 IP地址进行比较, 以减小数据结构大小, 或者使用节省下来的空间 存储更多的冲突项。
以选择直接存储 0-3Bit的匹配项为例, 存储结构如图 3所示:
以 "*,, 为 OBit开始计, 共有 4级匹配项被直接保存, 最后一级匹配项只 有 000有下一级节点,因此只有 000的下一级节点指针指向一个存储哈希后数 值的数据结构, 该数据结构中包含 "哈希函数" "IP" "下一级节点指针"。
现以实例说明具体的存储方法, 假设要存储的路由表长度为 32Bit, 以 Multi-Bit Tree存储时, 步长为 8, 共有 4级, 其节点结构如图 4所示:
根节点 401中可储存 28个匹配项, 其中只有 1个匹配项有下一级节点, 该匹配项的下一级节点指针指向第一级节点 402; 第一级节点 402同样可储存 28个匹配项, 其中有 2个匹配项有下一级节点, 这 2个匹配项的下一级节点 指针分别指向第二级节点 403和第二级节点 404; 第二级节点 403同样可储存 28 个匹配项, 但是其中没有任何一个匹配项有下一级节点, 第二级节点 404 同样可储存 28个匹配项, 其中只有 1个匹配项有下一级节点, 该匹配项的下 一级节点指针指向第三级节点 405; 第三级节点 405同样可储存 28个匹配项, 但是其中没有任何一个匹配项有下一级节点。
由以上描述可知, 第一级节点 402、 第二级节点 403、 第二级节点 404、 第三级节点 405共为 28 X 4个匹配项申请并预留了空间,其中只有 3个匹配项 有下一级节点, 既只有 3个 "下一级节点指针" 表项不为空, 有 28 x 4 - 3个 匹配项的 "下一级节点指针"表项占用的空间被浪费了, 再加上并不是所有位 置都有相匹配项的匹配项, "匹配项" 表项的浪费也非常严重。
在本发明提供的存储路由表的方法实施例中,将所述路由表分为下一级节 点指针部分和匹配项编码部分保存;
在所述下一级节点指针部分保存根节点数据和第一级节点数据;
其中, 所述根节点数据包括具有下一级节点指针的根节点匹配项, 所述匹 配项的根节点哈希函数、 根节点的下一级节点指针;
使用所述匹配项的根节点哈希函数对所述匹配项第一级节点步长范围内 网际协议地址进行哈希,以哈希结果作为偏移地址在所述根节点的下一级节点 指针指向的位置存储所述第一级节点数据;
所述第一级节点数据包括所述匹配项第一级节点步长范围内网际协议地 址, 所述匹配项的第一级节点哈希函数、 第一级节点的下一级节点指针;
所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
在有更多级节点, 级数为 N时;
在所述下一级节点指针部分还要保存第 N级节点数据;
使用所述匹配项的第 N-1级节点的哈希函数对第 N级节点步长范围内网 际协议地址进行哈希,以哈希结果作为偏移地址在所述第 N-1级节点的下一级 节点指针指向的位置存储所述第 N级节点数据;
所述第 N级节点数据包括所述匹配项第 N级节点步长范围内网际协议地 址, 所述匹配项的第 N级节点的哈希函数、 第 N级节点的下一级节点指针; 所述第 N级节点的下一级节点指针指向第 N级节点的匹配项编码指针, 所述第 N级节点的匹配项编码指针指向所述匹配项部分;
其中, 所述 N为大于等于 2的整数。 存储路由表的方法实施例一的存储结构如图 5所示:
虚线框 501内为根节点的数据,根据图 4可知,根节点中只有 1个匹配项 有下一级节点, 因此在本发明提供的存储路由表的方法实施例一中, 只需存储 一个匹配项的 "下一级节点指针"。 由于本发明提供的存储路由表的方法实施 例一选择直接存储 0-8Bit的匹配项, 不需要对 0-8Bit的 IP地址进行哈希, 因 此虚线框 501 内存储的数据为: 有下一级节点指针的 "匹配项"、 选择使用的 "哈希函数"、 "下一级节点指针"; 其中 "哈希函数" 为根节点哈希函数, 用 于对所述匹配项第一级节点步长范围内 IP地址进行哈希, 也就是用于对实际
IP地址的 9-16Bit进行哈希的哈希函数; "下一级节点指针" 指向存放第一级 节点数据的地址, 通过 "下一级节点指针"可以找到存放第一级节点数据的位 置, 通过对实际 IP地址的 9-16Bit进行哈希的结果, 可以找到对应的匹配项数 据。
虚线框 502内为第一级节点的数据,根据图 4可知第一级节点中有两个匹 配项有下一级节点, 因此虚线框 502内存储有 2个匹配项的相关数据。
其中 "哈希 11"、 "IP11"、 "哈希 12"、 "IP12"、 "哈希 13"、 "IP13"、 "下 一级节点指针 为存储第一级节点的具有下一级节点匹配项的相关数据的第 一个表项 ,对匹配项实际 IP地址的 9-16Bit进行哈希后 , 以哈希结果作为偏移 地址, 偏移地址位于本表项的匹配项都保存于该表项; "哈希 11"、 "哈希 12"、 "哈希 13" 对应表 7 中的 "哈希函数" 表项, 是第一级节点的哈希函数, 保 存有对本表项中具有下一级节点匹配项的第 17-24Bit进行哈希的三个不同哈 希函数, 即用于对匹配项第二级节点步长范围内 IP地址进行哈希的哈希函数; "ΙΡ1Γ,、 "IP12"、 "IP13" 对应表 7 中的 "IP" 表项; 如果使用虚线框 501 中的哈希函数对具有下一级节点匹配项的第 9-16Bit进行哈希后, 偏移地址位 于本表项,且哈希结果没有冲突,则根据实际情况保存实际 IP地址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几个 Bit于 "IP11" , 使用 "哈希 11" 对该匹 配项 IP地址的 17-24Bit进行哈希; 如果出现冲突, 则按冲突顺序进行处理, 如果是第一个冲突项, 根据实际情况保存实际 IP地址的 9-16Bit, 或者实际 IP 地址的 9-16Bit中的几个 Bit于 "IP12" , 使用 "哈希 12" 对该匹配项 IP地址 的 17-24Bit进行哈希, 如果是第二个冲突项, 则根据实际情况保存实际 IP地 址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几个 Bit于 "IP13" , 使用 "哈 希 13"对该匹配项 IP地址的 17-24Bit进行哈希,也可以直接将实际 IP地址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几个 Bit保存在为空的 "IP" 项中, 使用相应 "哈希函数"对该匹配项 IP地址的 17-24Bit进行哈希; "下一级节点 指针 1" 指向该匹配项的 "最长匹配前缀 1" 存放地址; "最长匹配前缀 1" 和 "匹配项指针 Γ 及第二级节点的 "哈希 41"、 "IP41"、 "哈希 42"、 "IP42,,、 "哈希 43"、 "IP43,,、 "下一级节点指针 4" 存放在一起; "匹配项指针 Γ 指 向该匹配项对应的 "匹配项编码 1" , "匹配项编码 1" 中保存有 501中 "下一 级节点指针"指向的第一级节点的匹配项部分相关数据,通过 "匹配项指针 1" 可以将第一级节点信息和对应的 "匹配项,, 信息联系在一起。
"哈希 21"、 "IP21'\ "哈希 22"、 "IP22" , "哈希 23"、 "IP23" , "下一级 节点指针 2"为存储第一级节点的具有下一级节点匹配项的相关数据的第二个 表项, 和 "哈希 11"、 "IP11"、 "哈希 12"、 "IP12"、 "哈希 13"、 "IP13"、 "下 一级节点指针 1 " 保存于同一张表中, 这张表可以被称为是一个子节点数组 ( Child Array ), 如果第一级节点中有更多的匹配项有下一级节点, 这些匹配 项的相关数据也都将存储于这个子节点数组中; "哈希 11"、 "哈希 12"、 "哈希 13"对应表 7中的 "哈希函数"表项, 是第一级节点的哈希函数, 保存有对第 二个具有下一级节点匹配项的第 17-24Bit进行哈希的三个不同哈希函数,即用 于对匹配项第二级节点步长范围内 IP 地址进行哈希的哈希函数; "ΙΡ2Γ,、 "ΙΡ22"、 "ΙΡ23" 对应表 7中的 "IP" 表项; 如果使用虚线框 501 中的哈希 函数对具有下一级节点匹配项的第 9-16Bit进行哈希后,偏移地址位于本表项, 且哈希结果没有冲突, 则根据实际情况保存实际 IP地址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几个 Bit于 "ΙΡ2Γ , 使用 "哈希 21" 对该匹配项 IP地 址的 17-24Bit进行哈希;如果出现冲突,则按冲突顺序,如果是第一个冲突项, 根据实际情况保存实际 IP地址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几 个 Bit于 "IP22" , 使用 "哈希 22" 对该匹配项 IP地址的 17-24Bit进行哈希, 如果是第二个冲突项, 则根据实际情况保存实际 IP地址的 9-16Bit, 或者实际 IP地址的 9-16Bit中的几个 Bit于 "IP23" , 使用 "哈希 23" 对该匹配项 IP地 址的 17-24Bit进行哈希, 也可以直接将实际 IP地址的 9- 16Bit , 或者实际 IP 地址的 9-16Bit中的几个 Bit保存在为空的 "IP" 项中, 使用相应 "哈希函数" 对该匹配项 IP地址的 17-24Bit进行哈希; "下一级节点指针 2" 指向该匹配项 的 "最长匹配前缀 2" 存放地址; "最长匹配前缀 2" 和 "匹配项指针 2" 及第 二级节点的 "哈希 31"、 "IP31"、 "哈希 32"、 "IP32"、 "哈希 33"、 "IP33"、 "下 一级节点指针 3"存放在一起; "匹配项指针 2"指向该匹配项对应的 "匹配项 编码 , "匹配项编码 中保存有 501中 "下一级节点指针" 指向的第一级 节点的匹配项部分相关数据,由于一个子节点数组中所有数据都属于同一个节 点, 因此所有 "匹配项指针" 最终都指向属于同一个节点的匹配项编码。 通过 "匹配项指针 2"可以将第一级节点信息和对应的 "匹配项,,信息联系在一起。
虚线框 503内为第二级节点的数据,根据图 4可知第二级节点中有两个节 点, 其中有一个节点中有一个匹配项有下一级节点, 因此虚线框 503内存储有 2个节点的相关数据, 但是只有一个的下一级节点指针指向的数据包含第三级 节点数据。
其中 "哈希 31"、 'ΊΡ3Γ,、 "哈希 32"、 "ΙΡ32" , "哈希 33"、 'ΊΡ33"、 "下 一级节点指针 3" 为 "下一级节点指针 2" 指向的节点的相关数据, 和第一级 节点的第二个具有下一级节点匹配项的相关数据 "最长匹配前缀 2" 和 "匹配 项指针 2" 保存在同一个表格里; "哈希 31"、 "哈希 32"、 "哈希 33" 对应表 7 中的 "哈希函数"表项,保存有对本表项中具有下一级节点匹配项的第 25-32Bit 进行哈希的三个不同哈希函数, 即用于对匹配项第三级节点步长范围内 IP地 址进行哈希的哈希函数; 'ΊΡ3Γ,、 'ΊΡ32,,、 "ΙΡ33" 对应表 7中的 "IP"表项; 如果使用虚线框 501 中的哈希函数对 "下一级节点指针 2" 指向的节点的第 17-24Bit进行哈希后, 偏移地址位于本表项, 且哈希结果没有冲突, 则根据实 际情况保存实际 IP地址的 17-24Bit,或者实际 IP地址的 17-24Bit中的几个 Bit 于 "IP31" , 使用 "哈希 31"对该匹配项 IP地址的 24-32Bit进行哈希; 如果出 现冲突, 则按冲突顺序进行处理, 如果是第一个冲突项, 根据实际情况保存实 际 IP地址的 17-24Bit, 或者实际 IP地址的 17-24Bit中的几个 Bit于 "IP32" , 使用 "哈希 32" 对该匹配项 IP地址的 24-32Bit进行哈希, 如果是第二个冲突 项,则根据实际情况保存实际 IP地址的 17-24Bit,或者实际 IP地址的 17-24Bit 中的几个 Bit于 "IP33" , 使用 "哈希 33" 对该匹配项 IP地址的 24-32Bit进行 哈希, 也可以直接将实际 IP地址的 17-24Bit, 或者实际 IP地址的 17-24Bit中 的几个 Bit保存在为空的 "IP" 项中 , 使用相应 "哈希函数"对该匹配项 IP地 址的 24-32Bit进行哈希; "下一级节点指针 3" 指向该匹配项的 "最长匹配前 缀 3"存放地址; "最长匹配前缀 3"和 "匹配项指针 3"存放在一起, 由于 "下 一级节点指针 2" 指向的节点没有下一级节点, 因此 "下一级节点指针 3" 指 向的地址不包括第三级节点的数据; "匹配项指针 3"指向该匹配项对应的 "匹 配项编码 3" , "匹配项编码 3" 中保存有 "下一级节点指针 2" 指向的节点的 匹配项部分相关数据, 通过 "匹配项指针 3" 可以将第二级节点信息和对应的 "匹配项" 信息联系在一起。
"哈希 41"、 "IP41,,、 "哈希 42"、 "IP42,,、 "哈希 43"、 "IP43,,、 "下一级 节点指针 4" 为 "下一级节点指针 1" 指向的节点的相关数据, 和第一级节点 的第一个具有下一级节点匹配项的相关数据 "最长匹配前缀 Γ 和 "匹配项指 针 1"保存在同一个表格里; "哈希 41"、 "哈希 42"、 "哈希 43"对应表 7中的 "哈希函数" 表项, 保存有对 "下一级节点指针 1" 指向的节点的第 17-24Bit 进行哈希的三个不同哈希函数, 即用于对匹配项第三级节点步长范围内 IP地 址进行哈希的哈希函数; "ΙΡ4Γ,、 'ΊΡ42"、 "ΙΡ43" 对应表 7中的 "IP"表项; 如果使用虚线框 501 中的哈希函数对 "下一级节点指针 1" 指向的节点的第 17-24Bit进行哈希, 哈希结果没有冲突, 则保存在 "哈希 41" 中, 并根据实际 情况保存实际 IP地址的 17-24Bit, 或者实际 IP地址的 17-24Bit中的几个 Bit 于 "IP41" , 使用 "哈希 41"对该匹配项 IP地址的 24-32Bit进行哈希; 如果出 现冲突, 则按冲突顺序进行处理, 如果是第一个冲突项, 根据实际情况保存实 际 IP地址的 17-24Bit, 或者实际 IP地址的 17-24Bit中的几个 Bit于 "IP42" , 使用 "哈希 32" 对该匹配项 IP地址的 24-32Bit进行哈希, 如果是第二个冲突 项,则根据实际情况保存实际 IP地址的 17-24Bit,或者实际 IP地址的 17-24Bit 中的几个 Bit于 "IP43" , 使用 "哈希 43" 对该匹配项 IP地址的 24-32Bit进行 哈希, 也可以直接将实际 IP地址的 17-24Bit, 或者实际 IP地址的 17-24Bit中 的几个 Bit保存在为空的 "IP" 项中 , 使用相应 "哈希函数"对该匹配项 IP地 址的 24-32Bit进行哈希; "下一级节点指针 4" 指向该匹配项的 "最长匹配前 缀 4"存放地址; "最长匹配前缀 4"和 "匹配项指针 4" 及第三级节点的 "哈 希 51"、 "IP51"、 "哈希 52"、 "IP52"、 "哈希 53"、 "IP53"、 "下一级节点指针 5" 存放在一起; "匹配项指针 4" 指向该匹配项对应的 "匹配项编码 4" , "匹 配项编码 4" 中保存有 "下一级节点指针 1" 指向的节点的匹配项部分相关数 据, 通过 "匹配项指针 4" 可以将第二级节点信息和对应的 "匹配项" 信息联 系在一起。
虚线框 504内为第三级节点的数据,根据图 4可知第三级节点中有一个节 点,但是该节点没有下一级节点, 因此虚线框 504内存储有 1个节点的相关数 据, 且该节点的 "下一级节点指针" 指向的地址不包括下一级节点的数据。
其中 "哈希 51"、 'ΊΡ5Γ,、 "哈希 52"、 "ΙΡ52" , "哈希 53"、 'ΊΡ53"、 "下 一级节点指针 5" 为 "下一级节点指针 4" 指向的节点的相关数据, 和下一级 节点指针 1" 指向的节点的相关数据 "最长匹配前缀 4" 和 "匹配项指针 4" 保存在同一个表格里; "哈希 51"、 "哈希 52"、 "哈希 53" 对应表 7中的 "哈 希函数"表项, 由于本实施例中 IP地址最长只有 32位, 因此 "哈希 51"、 "哈 希 52"、 "哈希 53" 通常为空; 'ΊΡ5Γ,、 'ΊΡ52"、 "ΙΡ53" 对应表 7中的 "IP" 表项; 如果使用虚线框 501中的哈希函数对 "下一级节点指针 4" 指向的节点 的第 25-32Bit进行哈希, 哈希结果没有冲突, 则保存在 "哈希 51" 中, 并根 据实际情况保存实际 IP地址的 25-32Bit, 或者实际 IP地址的 25-32Bit中的几 个 Bit于 "ΙΡ5Γ ; 如果出现冲突, 则按冲突顺序进行处理, 如果是第一个冲突 项, 根据实际情况保存实际 IP地址的 25-32Bit, 或者实际 IP地址的 25-32Bit 中的几个 Bit于 "IP52" , 如果是第二个冲突项, 则根据实际情况保存实际 IP 地址的 25-32Bit, 或者实际 IP地址的 25-32Bit中的几个 Bit于 "IP53" ; "下一 级节点指针 5"指向该匹配项的 "最长匹配前缀 5"存放地址; "最长匹配前缀 5" 和 "匹配项指针 5"存放在一起, 由于 "下一级节点指针 4" 指向的节点没 有下一级节点, 因此 "下一级节点指针 5" 指向的地址不包括第三级节点的数 据; "匹配项指针 5" 指向该匹配项对应的 "匹配项编码 5" , "匹配项编码 5" 中保存有 "下一级节点指针 4" 指向的节点的匹配项部分相关数据, 通过 "匹 配项指针 5" 可以将第三级节点信息和对应的 "匹配项,, 信息联系在一起。
由以上对图 5的描述可以看出,使用本发明提供的存储路由表的方法实施 例一后, 原本占用 28 x 4 - 3个 "下一级节点指针" 表项空间的 "下一级节点 指针" 部分, 只需要保存其中不为空的部分, 及 "下一级节点指针" 指向部分 即可, 占用空间大大减少, 有效节省了路由表占用空间。 间
Figure imgf000018_0001
路由表占用的空间。
以上为本发明提供的存储路由表的方法实施例, 与之对应, 本发明提供了 查找路由表的方法实施例。
本发明提供的查找路由表的方法实施例,是在路由表的下一级节点指针部 在本发明提供的查找路由表的方法实施例中,根据存储路由表的下一级节 点指针部分直接存储的长度, 取待查 IP地址进行直接查找;
读取查找到的哈希函数、 下一级节点指针;
使用查找到的哈希函数对下一级节点的相应 IP地址进行哈希, 使用所述 下一节点指针及所述哈希的结果作为偏移, 查找下一级节点数据;
根据所述查找结果读取匹配项编码。
本发明提供的查找路由表的方法实施例一流程如图 6所示:
步骤 601、 根据直接存储的比特长度, 取待查 IP地址进行直接查找。 开始查找时, 根据存储时直接存储的 Bit长度, 使用相应 Bit的 IP地址进 行直接查找。 如: 存储时, 选择直接存储 0-8Bit的匹配项, 则使用待查 IP地 址的 0-8Bit直接查找路由表的下一级节点指针部分。
步骤 602、 判断是否查找到, 是则进入步骤 603; 否则进入步骤 613。 步骤 603、 根据查找到的内容, 查找下一级匹配数据。
读取查找到的 "匹配项" "哈希函数" "下一级节点指针", 根据查找到的 "下一级节点指针"找到存储下一级节点数据的子节点数组,根据实际步长情 况使用读取到的 "哈希函数" 对下一级节点的相应 IP地址进行哈希, 使用哈 希结果作为偏移地址查找子节点数组。
现举例说明根据实际步长情况对相应长度 IP地址进行哈希, 例如, 步长 为 "8" 的时候, 对 IP地址的 9-16Bit进行哈希, 步长为 "16" 时, 对 17-32 Bit 进行哈希, 等等。
步骤 604、 判断是否查找到, 是则执行步骤 605; 否则执行步骤 613。 步骤 605、 比对表项中的实际 IP地址, 判断是否有吻合的实际 IP地址, 是则, 进入步骤 606; 否则, 进入步骤 613。
在根据 IP地址哈希结果存储数据时, 根据实际情况保存有实际 IP地址、 或实际 IP的部分 Bit位,用于防治找错的状况,这是由于哈希时有可能出现冲 突,在步骤 604中查找到了与哈希结果匹配的表项,也不能说明查找的结果是 正确的 ,还需要使用待查 IP地址与查找到的哈希结果相应的 IP地址进行比对, 实际 IP地址的比对也吻合, 则说明查找结果正确, 进入步骤 606; 否则, 进 入步骤 613。
步骤 606、 根据查找到的内容, 查找下一级匹配数据。
读取查找到的吻合的实际 IP地址对应的 "哈希函数", 例如, 待查 IP地 址与 "IP21" 中保存的实际 IP地址匹配, 则读取 "哈希 21" 中的哈希函数; 读取查找到的 "下一级节点指针", 根据查找到的 "下一级节点指针" 找到存 储下一级节点数据的子节点数组,根据实际步长情况使用读取到的 "哈希函数" 对相应长度 IP地址进行哈希, 使用哈希结果作为偏移地址查找子节点数组。
步骤 607、 判断是否查找到, 是则执行步骤 608; 否则执行步骤 613。 步骤 608、 比对表项中的实际 IP地址, 判断是否有吻合的实际 IP地址, 是则, 进入步骤 609; 否则, 进入步骤 613。
步骤 606到步骤 608与步骤 603到步骤 605基本相同,只是查找对象由第 一级节点数据, 变为了第二级节点数据,路由表有多少级节点就需要进行相应 次数的查找, 本实施例中, 以路由表包含四级节点为例进行说明, 以上步骤已 经查找过 "根节点" "第一级节点" "第二级节点",接下来的步骤中将查找 "第 三级节点"。
步骤 609、 根据查找到的内容, 查找下一级匹配数据。 读取查找到的吻合的实际 IP地址对应的 "哈希函数", 例如, 待查 IP地 址与 "IP31" 中保存的实际 IP地址匹配, 则读取 "哈希 31" 中的哈希函数; 读取查找到的 "下一级节点指针", 根据查找到的 "下一级节点指针" 找到存 储下一级节点数据的子节点数组,根据实际步长情况使用读取到的 "哈希函数" 对相应长度 IP地址进行哈希, 使用哈希结果作为偏移地址查找子节点数组。
步骤 610、 判断是否查找到, 是则执行步骤 611 ; 否则执行步骤 613。 步骤 611、 比对表项中的实际 IP地址, 判断是否有吻合的实际 IP地址, 是则, 进入步骤 612; 否则, 进入步骤 613。
步骤 612、 读取 "最长匹配前缀" "匹配项指针", 根据 "匹配项指针" 读 取对应 "匹配项编码"。
根据查找到的 "下一级节点指针" 读取 "最长匹配前缀" "匹配项指针", 根据 "匹配项指针" 读取对应 "匹配项编码"。
若一个节点的匹配项数据被分为多个部分保存,则此时还需要参考待查 IP 找到对应的匹配项编码。 例如, 步长为 8时, 一个节点需要 255个 bit记录该 节点的匹配项, 而我们的结构是 128bit的,再加上可能还需要记录一些其他的 相关数据,因此通常使用 4个 128bit的匹配项编码存储空间纪录该节点的匹配 项, 255bit的数据分为 4个部分来存储, 4个存储空间可以使用 2个 Bit进行 区分, 每一个匹配项与 4相除后剩余 6Bit, 其前 2Bit可以作为偏移项, 根据 前 2Bit选择匹配项编码存储空间进行存储, 在查找时, 使用前 2Bit作为偏移 地址, 再加上查找到的 "匹配项指针"找到对应的匹配项编码存储空间, 再在 该匹配项编码存储空间中查找对应匹配项,例如 10101101 ,即取 10作为偏移, 找编号为 "10"的匹配项编码部分, 查找其中地址为 "101101"的匹配项编码, 查找到则返回对应的最长前缀匹配数据, 查找不到, 则返回上一级节点看有没 有最长前缀匹配, 如果有则返回该最长前缀匹配数据,如果没有则根据查找记 录读取最长前缀匹配的节点。
步骤 613、根据上一级节点中的 "下一级节点指针", 读取 "匹配项指针", 根据 "匹配项指针" 找到对应的 "匹配项编码"。
进入步骤 613 , 表示没有在子节点数组中找到正确的表项, 即该待查 IP 地址的最长前缀匹配到本级节点为止, 不需要到下一级节点中进行查找。 若一个节点的匹配项数据被分为多个部分保存,则此时还需要参考待查 IP 找到对应的匹配项编码。 例如, 步长为 8时, 一个节点需要 255个 bit记录该 节点的匹配项, 而我们的结构是 128bit的,再加上可能还需要记录一些其他的 相关数据,因此通常使用 4个 128bit的匹配项编码存储空间纪录该节点的匹配 项, 255bit的数据分为 4个部分来存储, 4个存储空间可以使用 2个 Bit进行 区分, 每一个匹配项与 4相除后剩余 6Bit, 其前 2Bit可以作为偏移项, 根据 前 2Bit选择匹配项编码存储空间进行存储, 在查找时, 使用前 2Bit作为偏移 地址,再加上查找到的前缀指针找到对应的匹配项编码存储空间,再在该匹配 项编码存储空间中查找对应匹配项, 例如 10101101 , 即取 10作为偏移, 找编 号为 "10" 的匹配项编码部分, 查找其中地址为 "101101" 的匹配项编码, 查 找到则返回对应的最长前缀匹配数据, 查找不到, 则返回上一级节点看有没有 最长前缀匹配,如果有则返回该最长前缀匹配数据,如果没有则根据查找记录 读取最长前缀匹配的节点。
釆用本发明提供的查找路由表的方法实施例后,存储路由表时, 不再需要 为全部的表项都分配存储 "下一级节点指针" 的空间, 大大节省了路由表占用 的内存空间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可 读存储介质中, 该程序在执行时, 包括如下步骤:
一种存储路由表的方法, 包括:
将待存储网际协议地址分为下一级节点指针部分和匹配项编码部分保存, 具体包括:
在所述下一级节点指针部分保存根节点的数据和第一级节点的数据,所述 第一级节点是所述根节点的下一级节点;
其中, 所述根节点的数据包括所述根节点的匹配项, 所述根节点的哈希函 数和所述根节点的下一级节点指针;
使用所述根节点的哈希函数对所述第一级节点步长范围内的待存储网际 协议地址进行哈希, 以哈希结果作为偏移地址,在所述根节点的下一级节点指 针偏移所述偏移地址的位置存储所述第一级节点的数据; 所述第一级节点的数据包括所述第一级节点步长范围内的待存储网际协 议地址, 所述第一级节点的哈希函数和所述第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
一种查找路由表的方法, 包括:
根据存储路由表的下一级节点指针部分直接存储的长度, 取待查 IP地址 进行查找;
读取查找到的哈希函数、 下一级节点指针;
使用查找到的哈希函数对下一级节点步长范围内待查网际协议地址进行 哈希,使用所述下一级节点指针及所述哈希的结果作为偏移, 查找下一级节点 数据;
根据所述查找结果读取匹配项编码。
上述提到的存储介质可以是只读存储器, 磁盘或光盘等。
本发明提供的存储路由表的装置实施例, 包括:
匹配项编码单元, 用于保存路由表的匹配项编码部分;
下一级节点指针单元, 用于保存根节点数据和第一级节点数据; 其中, 所述根节点数据包括具有下一级节点指针的根节点匹配项, 所述匹 配项的根节点哈希函数、 根节点的下一级节点指针;
使用所述匹配项的根节点哈希函数对所述匹配项第一级节点步长范围内 网际协议地址进行哈希,以哈希结果作为偏移地址在所述根节点的下一级节点 指针指向的位置存储所述第一级节点数据;
所述第一级节点数据包括所述匹配项第一级节点步长范围内网际协议地 址, 所述匹配项的第一级节点哈希函数、 第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
其中, 所述下一级节点指针单元还用于:
保存第 N级节点数据;
使用所述匹配项的第 N-1级节点的哈希函数对第 N级节点步长范围内网 际协议地址进行哈希,以哈希结果作为偏移地址在所述第 N-1级节点的下一级 节点指针指向的位置存储所述第 N级节点数据;
所述第 N级节点数据包括所述匹配项第 N级节点步长范围内网际协议地 址, 所述匹配项的第 N级节点的哈希函数、 第 N级节点的下一级节点指针; 所述第 N级节点的下一级节点指针指向第 N级节点的匹配项编码指针, 所述第 N级节点的匹配项编码指针指向所述匹配项部分;
其中, 所述 N为大于等于 2的整数。 本发明提供的查找路由表的装置实施例, 包括:
直接查找单元,用于根据存储路由表的下一级节点指针部分直接存储的长 度, 取待查 IP地址进行查找;
第一读取单元, 用于读取查找到的哈希函数、 下一级节点指针;
哈希查找单元,用于使用查找到的哈希函数对下一级节点的待查步长范围 内网际协议地址进行哈希,使用所述下一级节点指针及所述哈希的结果作为偏 移, 查找下一级节点数据;
第二读取单元, 用于根据所述查找结果读取匹配项编码。
IP地址比对单元, 用于使用所述下一节点指针及所述哈希的结果作为偏 移, 查找下一级节点数据, 查找到地址吻合的表项后, 比对实际 IP地址与表 项中保存的 IP地址, 有匹配的 IP地址, 通知成功处理单元查找成功, 否则, 通知失败处理单元查找失败。
其中, 所述第二读取单元包括:
成功处理单元, 用于在查找成功时,控制第一读取单元读取查找到的哈希 函数、 下一级节点指针; 哈希查找单元使用查找到的哈希函数对下一级节点的 待查步长范围内 IP地址进行哈希, 使用所述下一节点指针及所述哈希的结果 作为偏移,查找下一级节点数据;直到查找到最后一级节点,读取匹配项指针, 根据所述匹配项指针读取匹配项编码;
失败处理单元,用于在查找失败时,读取上一级节点数据中的匹配项指针, 根据所述匹配项指针读取匹配项编码。
本发明提供的存储路由表的装置实施例、查找路由表的装置实施例的具体 运作方式, 可参考上文描述的本发明提供的存储、 查找路由表的方法实施例, 在此不再详细描述。
以上对本发明所提供的一种本发明提供的存储、查找路由表的方法及装置 述, 以上实施例的说明只是用于帮助理解本发明的方法及其核心思想; 同时, 对于本领域的一般技术人员,依据本发明的思想, 在具体实施方式及应用范围 上均会有改变之处, 综上所述, 本说明书内容不应理解为对本发明的限制。

Claims

权 利 要 求
1、 一种存储路由表的方法, 其特征在于, 包括:
将待存储网际协议地址分为下一级节点指针部分和匹配项编码部分保存, 具体包括:
在所述下一级节点指针部分保存根节点的数据和第一级节点的数据,所述 第一级节点是所述根节点的下一级节点;
其中, 所述根节点的数据包括所述根节点的匹配项, 所述根节点的哈希函 数和所述根节点的下一级节点指针;
使用所述根节点的哈希函数对所述第一级节点步长范围内的待存储网际 协议地址进行哈希,在所述根节点的下一级节点指针指向的位置以哈希结果作 为偏移地址存储所述第一级节点的数据;
所述第一级节点的数据包括所述第一级节点步长范围内的待存储网际协 议地址, 所述第一级节点的哈希函数和所述第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
2、 如权利要求 1所述的存储路由表的方法, 其特征在于, 所述方法还包 括:
在第 N级的下一级节点指针部分保存第 N级节点数据;
使用第 N-1级节点的哈希函数对第 N级节点步长范围内的待存储网际协 议地址进行哈希,在所述第 N-1级节点的下一级节点指针指向的位置, 以哈希 结果作为偏移地址存储所述第 N级节点的数据;
所述第 N级节点数据包括所述第 N级节点步长范围内的待存储网际协议 地址, 所述第 N级节点的哈希函数和所述第 N级节点的下一级节点指针; 所述第 N级节点的下一级节点指针指向第 N级节点的匹配项编码指针, 所述第 N级节点的匹配项编码指针指向所述匹配项部分;
其中, 所述 N为大于等于 2的整数。
3、 如权利要求 2所述的存储路由表的方法, 其特征在于, 在所述第一级 节点有下一级节点时,所述第一级节点的下一级节点指针还指向第二级节点数 据; 所述第 N级节点有下一级节点时, 所述第 N级节点的下一级节点指针还 指向第 N+1级节点数据。
4、 如权利要求 1、 2或 3所述的存储路由表的方法, 其特征在于, 所述步 长范围内网际协议地址包括:
步长范围内部分实际网际协议地址、 或全部网际协议地址。
5、 一种查找路由表的方法, 其特征在于, 包括:
根据存储路由表的下一级节点指针部分直接存储的长度,取待查网际协议 地址进行查找;
读取查找到的哈希函数、 下一级节点指针;
使用查找到的哈希函数对下一级节点步长范围内待查网际协议地址进行 哈希,使用所述下一级节点指针及所述哈希的结果作为偏移, 查找下一级节点 数据;
根据所述查找结果读取匹配项编码。
6、 如权利要求 5所述的查找路由表的方法, 其特征在于, 所述根据所述 查找结果读取匹配项编码包括:
在查找结果为成功时, 重复上述步骤读取查找到的哈希函数、 下一级节点 指针; 使用查找到的哈希函数对下一级节点步长范围内网际协议地址进行哈 希,使用所述下一节点指针及所述哈希的结果作为偏移,查找下一级节点数据; 直到查找到最后一级节点,读取匹配项指针,根据所述匹配项指针读取匹配项 编码。
7、 如权利要求 5所述的查找路由表的方法, 其特征在于, 所述根据所述 查找结果读取匹配项编码包括:
在查找失败时,读取上一级节点数据中的匹配项指针,根据所述匹配项指 针读取匹配项编码。
8、 如权利要求 5、 6或 7所述的查找路由表的方法, 其特征在于, 所述使 用所述下一节点指针及所述哈希的结果作为偏移,查找下一级节点数据之后还 包括:
使用所述下一节点指针及所述哈希的结果作为偏移, 查找下一级节点数 据, 查找到地址吻合的表项后, 比对待查步长范围内实际网际协议地址与表项 中保存的网际协议地址, 有匹配的网际协议地址, 则查找成功, 否则, 查找失 败。
9、 一种存储路由表的装置, 其特征在于, 包括:
匹配项编码单元, 用于保存路由表的匹配项编码部分;
下一级节点指针单元, 用于保存根节点的数据和第一级节点的数据, 所述 第一级节点是所述根节点的下一级节点;
其中, 所述根节点的数据包括所述根节点的匹配项, 所述根节点的哈希函 数和所述根节点的下一级节点指针;
使用所述根节点的哈希函数对所述第一级节点步长范围内的待存储网际 协议地址进行哈希,在所述根节点的下一级节点指针指向的位置, 以哈希结果 作为偏移地址存储所述第一级节点的数据;
所述第一级节点的数据包括所述第一级节点步长范围内的待存储网际协 议地址, 所述第一级节点的哈希函数和所述第一级节点的下一级节点指针; 所述第一级节点的下一级节点指针指向第一级节点的匹配项编码指针,所 述第一级节点的匹配项编码指针指向所述匹配项编码部分。
10、 如权利要求 9所述的存储路由表的装置, 其特征在于, 所述下一级节 点指针单元还用于:
保存第 N级节点数据;
使用第 N-1级节点的哈希函数对第 N级节点步长范围内的待存储网际协 议地址进行哈希,在所述第 N-1级节点的下一级节点指针指向的位置以哈希结 果作为偏移地址存储所述第 N级节点数据;
所述第 N级节点数据包括所述第 N级节点步长范围内的待存储网际协议 地址, 所述第 N级节点的哈希函数和所述第 N级节点的下一级节点指针; 所述第 N级节点的下一级节点指针指向第 N级节点的匹配项编码指针, 所述第 N级节点的匹配项编码指针指向所述匹配项部分;
其中, 所述 N为大于等于 2的整数。
11、 一种查找路由表的装置, 其特征在于, 包括:
直接查找单元,用于根据存储路由表的下一级节点指针部分直接存储的长 度, 取待查网际协议地址进行查找; 第一读取单元, 用于读取查找到的哈希函数、 下一级节点指针; 哈希查找单元,用于使用查找到的哈希函数对下一级节点步长范围内待查 网际协议地址进行哈希, 使用所述下一级节点指针及所述哈希的结果作为偏 移, 查找下一级节点数据;
第二读取单元, 用于根据所述查找结果读取匹配项编码。
12、 如权利要求 11所述的查找路由表的装置, 其特征在于, 所述第二读 取单元包括:
成功处理单元, 用于在查找成功时,控制第一读取单元读取查找到的哈希 函数、 下一级节点指针; 哈希查找单元使用查找到的哈希函数对下一级节点待 查步长范围内网际协议地址进行哈希,使用所述下一节点指针及所述哈希的结 果作为偏移, 查找下一级节点数据; 直到查找到最后一级节点, 读取匹配项指 针, 根据所述匹配项指针读取匹配项编码;
13、 如权利要求 11所述的查找路由表的装置, 其特征在于, 所述第二读 取单元包括:
失败处理单元,用于在查找失败时,读取上一级节点数据中的匹配项指针, 根据所述匹配项指针读取匹配项编码。
14、 如权利要求 11、 12或 13所述的查找路由表的装置, 其特征在于, 还 包括:
网际协议地址比对单元,用于使用所述下一节点指针及所述哈希的结果作 为偏移, 查找下一级节点数据, 查找到地址吻合的表项后, 比对待查步长范围 内实际网际协议地址与表项中保存的网际协议地址, 有匹配的网际协议地址 , 通知成功处理单元查找成功, 否则, 通知失败处理单元查找失败。
PCT/CN2009/072549 2008-06-30 2009-06-30 存储、查找路由表的方法及装置 WO2010000201A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN200810125283A CN101621502A (zh) 2008-06-30 2008-06-30 存储、查找路由表的方法及装置
CN200810125283.7 2008-06-30

Publications (1)

Publication Number Publication Date
WO2010000201A1 true WO2010000201A1 (zh) 2010-01-07

Family

ID=41465504

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2009/072549 WO2010000201A1 (zh) 2008-06-30 2009-06-30 存储、查找路由表的方法及装置

Country Status (2)

Country Link
CN (1) CN101621502A (zh)
WO (1) WO2010000201A1 (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130032223A1 (en) * 2011-08-03 2013-02-07 Hoerbiger Kompressortechnik Holding Gmbh Fluid mixer
US9274520B2 (en) 2012-03-01 2016-03-01 Nuovo Pignone Srl Method and system for condition monitoring of a group of plants
US20160084322A1 (en) * 2014-09-18 2016-03-24 Valeo Embrayages Double wet clutch mechanism for a transmission system
CN105697598A (zh) * 2016-03-01 2016-06-22 宁波华盛联合制动科技有限公司 一种液力缓速器用的油箱结构
US9593602B2 (en) 2014-10-07 2017-03-14 Iav Gmbh Ingenieurgesellschaft Auto Und Verkehr Device for a valve train for switching over the lift of gas-exchange valves of an internal combustion engine
US9861910B2 (en) 2014-12-16 2018-01-09 Saudi Arabian Oil Company Cyclone separation and recovery of carbon dioxide from heated liquid absorbent
DE102020112244A1 (de) 2020-05-06 2021-11-11 HELLA GmbH & Co. KGaA Schaltungsanordnung zum Verknüpfen von Netzen mit unterschiedlichen Nennspannungen über Gleichspannungswandler
DE102020112278A1 (de) 2020-05-06 2021-11-11 HELLA GmbH & Co. KGaA Schaltungsanordnung zum Verknüpfen von Netzen mit unterschiedlichen Nennspannungen über Gleichspannungswandler
DE102020002749A1 (de) 2020-05-08 2021-11-11 Gerd Lehmann Filterkorbrechen mit neuem Filterkorbverbund und neuer Sohlabdichtung
DE102020002836A1 (de) 2020-05-12 2021-11-18 Conrad Leuthaeuser Pharmazeutische und therapeutische Verwendung vom S-Acetylglutathion und seinen Enzymen gegen Viren und dem Coronavirus (Covid 19)
DE102020113377A1 (de) 2020-05-18 2021-11-18 Bayerische Motoren Werke Aktiengesellschaft Hybridgetriebeeinrichtung mit schaltbarem Übersetzungsverhältnis
US11228759B2 (en) 2016-10-05 2022-01-18 Interdigital Madison Patent Holdings, Sas Encoding and decoding methods and corresponding devices
CN114063931A (zh) * 2021-11-26 2022-02-18 重庆科创职业学院 一种基于大数据的数据存储方法
CN115514644A (zh) * 2022-11-15 2022-12-23 阿里云计算有限公司 表项一致性检查方法、电子设备及存储介质
CN117978780A (zh) * 2024-04-01 2024-05-03 北京微步在线科技有限公司 一种ip地址存储方法、装置、设备、介质及程序产品

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930011B (zh) * 2012-10-31 2016-08-03 杭州华三通信技术有限公司 流转发表项的处理方法及装置
CN104217034A (zh) * 2014-09-29 2014-12-17 北京北纬点易信息技术有限公司 基于指针操作的ip地址快速检索相关信息的方法
CN109039911B (zh) * 2018-07-27 2021-02-26 烽火通信科技股份有限公司 一种基于hash查找方式共享ram的方法及系统
CN110995876B (zh) * 2019-10-11 2021-02-09 中国科学院计算技术研究所 一种ip存储与查找的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1270728A (zh) * 1997-09-15 2000-10-18 埃弗内特集团股份有限公司 快速路由查找的方法和系统
US20040013113A1 (en) * 2002-07-17 2004-01-22 Ranjeeta Singh Technique to improve network routing using best-match and exact-match techniques
CN101141389A (zh) * 2007-09-29 2008-03-12 华为技术有限公司 增强多位Trie树查找方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1270728A (zh) * 1997-09-15 2000-10-18 埃弗内特集团股份有限公司 快速路由查找的方法和系统
US20040013113A1 (en) * 2002-07-17 2004-01-22 Ranjeeta Singh Technique to improve network routing using best-match and exact-match techniques
CN101141389A (zh) * 2007-09-29 2008-03-12 华为技术有限公司 增强多位Trie树查找方法和装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130032223A1 (en) * 2011-08-03 2013-02-07 Hoerbiger Kompressortechnik Holding Gmbh Fluid mixer
US9274520B2 (en) 2012-03-01 2016-03-01 Nuovo Pignone Srl Method and system for condition monitoring of a group of plants
US20160084322A1 (en) * 2014-09-18 2016-03-24 Valeo Embrayages Double wet clutch mechanism for a transmission system
US9593602B2 (en) 2014-10-07 2017-03-14 Iav Gmbh Ingenieurgesellschaft Auto Und Verkehr Device for a valve train for switching over the lift of gas-exchange valves of an internal combustion engine
US9861910B2 (en) 2014-12-16 2018-01-09 Saudi Arabian Oil Company Cyclone separation and recovery of carbon dioxide from heated liquid absorbent
CN105697598A (zh) * 2016-03-01 2016-06-22 宁波华盛联合制动科技有限公司 一种液力缓速器用的油箱结构
US11228759B2 (en) 2016-10-05 2022-01-18 Interdigital Madison Patent Holdings, Sas Encoding and decoding methods and corresponding devices
DE102020112244A1 (de) 2020-05-06 2021-11-11 HELLA GmbH & Co. KGaA Schaltungsanordnung zum Verknüpfen von Netzen mit unterschiedlichen Nennspannungen über Gleichspannungswandler
DE102020112278A1 (de) 2020-05-06 2021-11-11 HELLA GmbH & Co. KGaA Schaltungsanordnung zum Verknüpfen von Netzen mit unterschiedlichen Nennspannungen über Gleichspannungswandler
DE102020002749A1 (de) 2020-05-08 2021-11-11 Gerd Lehmann Filterkorbrechen mit neuem Filterkorbverbund und neuer Sohlabdichtung
DE102020002836A1 (de) 2020-05-12 2021-11-18 Conrad Leuthaeuser Pharmazeutische und therapeutische Verwendung vom S-Acetylglutathion und seinen Enzymen gegen Viren und dem Coronavirus (Covid 19)
DE102020113377A1 (de) 2020-05-18 2021-11-18 Bayerische Motoren Werke Aktiengesellschaft Hybridgetriebeeinrichtung mit schaltbarem Übersetzungsverhältnis
CN114063931A (zh) * 2021-11-26 2022-02-18 重庆科创职业学院 一种基于大数据的数据存储方法
CN114063931B (zh) * 2021-11-26 2023-04-25 重庆科创职业学院 一种基于大数据的数据存储方法
CN115514644A (zh) * 2022-11-15 2022-12-23 阿里云计算有限公司 表项一致性检查方法、电子设备及存储介质
CN117978780A (zh) * 2024-04-01 2024-05-03 北京微步在线科技有限公司 一种ip地址存储方法、装置、设备、介质及程序产品

Also Published As

Publication number Publication date
CN101621502A (zh) 2010-01-06

Similar Documents

Publication Publication Date Title
WO2010000201A1 (zh) 存储、查找路由表的方法及装置
US8325721B2 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
KR101539210B1 (ko) 완전―매치 룩업 엔진을 사용하는 계층적으로 구조화된 가변―길이 식별자들을 갖는 패킷들을 전송하기 위한 시스템
JP5525273B2 (ja) 階層的に構造化された可変長識別子を有するパケットを転送するためのシステム
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
US7167471B2 (en) Network processor with single interface supporting tree search engine and CAM
KR102072203B1 (ko) 컨텐츠 중심 네트워크에 계층적 이름의 변화에 강인한 단축 이름을 생성하는 방법 및 노드
CN108874987B (zh) 表项管理方法、装置及交换芯片
US7079542B2 (en) Internet protocol address look-up method
US20110082866A1 (en) Method and apparatus for logically expanding the length of a search key
US20070121632A1 (en) Method and system for routing an IP packet
WO2009135417A1 (zh) 一种基于树形数据结构的最长前缀匹配方法和装置
KR101434065B1 (ko) 최장 프리픽스 매치의 확장성을 개선하기 위한 방법 및 장치
CN1653763A (zh) 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备
WO2017000893A1 (zh) Ip路由查找
JP2014176099A (ja) 交互に構成された最長プレフィックスマッチテーブルを処理するための装置および方法
WO2015043254A1 (zh) 一种包分类规则的查找方法及装置
US6917954B2 (en) Load balancing in IP address lookup
WO2009132556A1 (zh) 一种数据查找的方法及装置
TWI239476B (en) Address search
US20100010961A1 (en) Distributed directories
CN116126928A (zh) 一种基于可变指纹布谷鸟过滤器的信息查找系统
KR100686732B1 (ko) 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
WO2024078011A1 (zh) 并行查表装置、方法及设备、计算机可读存储介质
US20240015102A1 (en) Longest prefix matching

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09771971

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09771971

Country of ref document: EP

Kind code of ref document: A1