Patent Publication Number: US-8527694-B2

Title: Method and apparatus for updating table entries of a ternary content addressable memory

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of International Application No. PCT/CN2010/078298, filed on Nov. 1, 2010, which claims priority to Chinese Patent Application No. 201010205047.3, filed on Jun. 11, 2010, both of which are hereby incorporated by reference in their entireties. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to the field of a ternary content addressable memory, and particularly, to a method and an apparatus for updating table entries of a ternary content addressable memory. 
     BACKGROUND OF THE INVENTION 
     In network equipments, a Ternary Content Addressable Memory (TCAM) is widely used due to its fast search characteristics. For example, it is used for fast route search, Access Control List (ACL) search, stream-based Quality of Service (QOS), policy-based routing and various safety techniques. In network equipments, a certain content of a message is usually used as an input for the search by the TCAM. The TCAM compares the input with all table entries stored therein, and when a completely matched table entry is found, executes an action bound to the table entry, e.g., discarding the message, allowing to forward the message, or modifying certain information of the message. When a plurality of table entries are completely matched with the input, the headmost one will be taken. 
     For example, in the application of route prefix search, a destination IP address of an input message is taken as the content to be inputted to the TCAM to search information related to the next hop. Other applications have similar processes. For another example, in the application of ACL search, the user sets “Permit ip host 192.168.1.1; Deny ip any any” and binds it to a port. When the port receives a message, it will extract an input port of the message, a field of protocol type, and a source IP address as the contents to be input to the TCAM for a search. When the message is of IP type and the source IP address is 192.168.1.1, the related TCAM table entry “permit ip host 192.168.1.1” will be hit, and a “permit” action will be executed, i.e., forwarding is allowed; otherwise a “deny” action will be executed for all other messages, i.e., all other messages will be discarded. 
     Whether the TCAM is used for fast route search or an application such as ACL search, etc., a certain order of the table entries of the TCAM will typically be maintained, i.e., the table entries have a fixed priority relationship thereamong and are stored in a continuous space. The table entries of the TCAM will be continuously updated during the operation of the equipment. 
     In the prior art methods for updating table entries of the TCAM, when the TCAM contains many table entries, as shown in  FIG. 1 , in case that a table entry needs to be added between Table Entries  3  and  4 , while there is no continuous hardware space of an appropriate size between Table Entries  3  and  4 , other table entries may be moved upwards and/or downwards. The addition of one table entry may cause rewriting of a lot of other table entries, which leads to a low efficiency in updating the table entries. 
     SUMMARY OF THE INVENTION 
     The present invention provides a method and an apparatus for updating table entries of a TCAM, so as to solve the problem of a low efficiency in updating table entries of the current TCAM. 
     According to an embodiment of the present invention, a method for updating table entries of a TCAM includes: 
     creating a virtual TCAM list, in which respective first TCAM table entries are one-to-one corresponding to respective second TCAM table entries stored in a hardware TCAM; 
     determining, in idle resources of the hardware TCAM, a storage position of a second TCAM table entry to be updated corresponding to a first TCAM table entry to be updated, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and of other first TCAM table entry in the virtual TCAM list; and 
     performing an updating operation on the second TCAM table entry to be updated in the hardware TCAM, based on the determined storage position. 
     An embodiment of the present invention provides an apparatus for updating table entries of a TCAM, including: 
     a creating unit configured to create a virtual TCAM list, in which respective first TCAM table entries are one-to-one corresponding to respective second TCAM table entries stored in a hardware TCAM; 
     a storage position determining unit configured to determine, in idle resources of the hardware TCAM, a storage position of a second TCAM table entry to be updated corresponding to a first TCAM table entry to be updated, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and of other first TCAM table entry in the virtual TCAM list; and 
     an updating operation unit configured to perform an updating operation on the second TCAM table entry to be updated in the hardware TCAM, based on the determined storage position. 
     The beneficial effects of the embodiments of the present invention are as follows: 
     The method and apparatus for updating table entries of a TCAM according to the embodiments of the present invention use the one-to-one correspondence between respective first TCAM table entries in the created virtual TCAM list and respective second TCAM table entries in the hardware TCAM, to determine a storage position of the second TCAM table entry to be updated corresponding to the first TCAM table entry to be updated in the idle resources of the hardware TCAM, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and of other first TCAM table entries in the virtual TCAM list, and perform an updating operation on the second TCAM table entry to be updated in the hardware TCAM based on the determined storage position. According to the embodiments of the present invention, the storage position of the second TCAM table entry to be updated is selected from the idle resources in the hardware TCAM so far as possible, thereby overcoming the problem with the prior art that when a second TCAM table entry of the hardware TCAM is directly updated, since the second TCAM table entries of the hardware TCAM are usually stored in a continuous storage space, in order to ensure the precedence relationships between the second TCAM table entry to be updated and other second TCAM table entries, a lot of related second TCAM table entries have to be moved when the second TCAM table entry to be updated causes a position collision, and thus the efficiency in updating the table entries of the hardware TCAM is lower due to rewriting a lot of second TCAM table entries. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic diagram illustrating table entries of a TCAM according to the prior art; 
         FIG. 2  is a flowchart illustrating a method for updating table entries of a TCAM according to an embodiment of the present invention; 
         FIG. 3  is a flowchart illustrating a method for determining a storage position of a first TCAM table entry to be added in a hardware TCAM according to an embodiment of the present invention; 
         FIG. 4  is a flowchart illustrating a method for judging correlation between data contents of a first TCAM table entry to be added and another first TCAM table entry according to an embodiment of the present invention; 
         FIG. 5  is a structural diagram illustrating an apparatus for updating table entries of a TCAM according to an embodiment of the present invention; 
         FIG. 6  is a structural diagram illustrating a creating unit according to an embodiment of the present invention; and 
         FIG. 7  is a structural diagram illustrating a storage position determining unit according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
     A method and an apparatus for updating table entries of a TCAM according to embodiments of the present invention will be described in detail hereinafter with reference to the drawings. 
     A method for updating table entries of a TCAM according to an embodiment of the invention updates table entries in a physical TCAM, through a series of operations on virtual table entries in a virtual TCAM list implemented by software by means of the one-to-one correspondence between the virtual table entries in the virtual TCAM list and respective table entries in the physical TCAM, which is referred to as a hardware TCAM so as to be distinguished from the software TCAM. For the convenience of description, hereinafter the virtual table entries in the virtual TCAM list are called as first TCAM table entries, and the table entries in the physical TCAM are called as second TCAM table entries. In order to be distinguished from the virtual TCAM list, the physical TCAM is called as a hardware TCAM. 
     Particularly, as illustrated in  FIG. 2 , the method for updating table entries of the TCAM according to the embodiment of the invention includes the following steps: 
     S 201 : creating a virtual TCAM list, in which respective first TCAM table entries are one-to-one corresponding to respective second TCAM table entries stored in the hardware TCAM; 
     S 202 : determining, in idle resources of the hardware TCAM, a storage position of a second TCAM table entry to be updated corresponding to a first TCAM table entry to be updated, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and other first TCAM table entries in the virtual TCAM list; 
     S 203 : performing an updating operation on the second TCAM table entry to be updated in the hardware TCAM, based on the determined storage position. 
     The detailed processes for carrying out the above steps are described as follows. 
     In step S 201 , a link list is created as the virtual TCAM list, in which each data node is a first TCAM table entry, and the first TCAM table entries are arranged in a pre-specified order and one-to-one corresponding to respective second TCAM table entries stored in the hardware TCAM. 
     The record in each first TCAM table entry at least includes the following 6 items: 
     a data content (represented as data) of the second TCAM table entry corresponding to the first TCAM table entry; 
     a storage position in the hardware TCAM (represented as tcamID) of the second TCAM table entry corresponding to the first TCAM table entry; 
     a minimum storage position (represented as minID) for the second TCAM table entry corresponding to the first TCAM table entry to be freely movable in the hardware TCAM; 
     a maximum storage position (represented as maxID) for the second TCAM table entry corresponding to the first TCAM table entry to be freely movable in the hardware TCAM; 
     a list of previous table entries (represented as Prelist) of the first TCAM table entry; and 
     a list of posterior table entries (represented as Poslist) of the first TCAM table entry. 
     In practice, in addition to the above items of the record, the first TCAM table entries may each record an indicator of an idle resource counter preset for counting an amount of idle resources between the minID and the maxID. 
     The parameters to be recorded by the idle resource counter may include: 
     minID (an upper limit of the monitoring region of the idle resource counter); 
     maxID (a lower limit of the monitoring region of the idle resource counter); 
     referNum (the number of times of referencing the idle resource counter); and 
     IdleNum (a number of idle second TCAM table entries in the monitoring region of the idle resource counter). 
     Since the prior art mainly concerns operations of adding and deleting table entries in the hardware TCAM, a lot of table entries may be rewritten and the updating efficiency of the hardware TCAM is low. The method for updating table entries of the TCAM according to the embodiments of the present invention makes improvements to the two updating operations. Steps S 202  and S 203  as illustrated in  FIG. 2  are implemented differently for the different updating operations. The implementation of the two steps is described respectively as follows with respect to the operations of adding and deleting a table entry. 
     In case of the operation of adding a second TCAM table entry (hereinafter referred to as a second TCAM table entry to be added) in the hardware TCAM, the second TCAM table entry will typically be predetermined to be located after a certain second TCAM table entry having been existed. Correspondingly, in step S 202 , as illustrated in  FIG. 3 , the following operations will be carried out on a corresponding first TCAM table entry to be added: 
     S 2021 : determining, in the virtual TCAM list, a storage position of a first TCAM table entry immediately before the first TCAM table entry to be added corresponding to the pre-specified second TCAM table entry to be added; 
     S 2022 : inserting the first TCAM table entry to be added after the determined storage position, and recording the data contents of the second TCAM table entry to be added in the first TCAM table entry to be added; 
     S 2023 : according to the recorded data contents and the data contents of other first TCAM table entries in the virtual TCAM list, determining the other first TCAM table entries related to the first TCAM table entry to be added in the virtual TCAM list; 
     S 2024 : determining all the first TCAM table entries, which are arranged before the first TCAM table entry to be added and related thereto in the virtual TCAM list, as table entries in the Prelist thereof; and 
     determining all the first TCAM table entries, which are arranged after the first TCAM table entry to be added and related thereto in the virtual TCAM list, as table entries in the Poslist thereof; 
     S 2025 : incrementing a storage position in the hardware TCAM of a second TCAM table entry corresponding to the backmost first TCAM table entry in the Prelist of the first TCAM table entry to be added by 1, and taking this storage position as a minimum storage position (minID) for the second TCAM table entry to be added to be freely movable in the hardware TCAM; and 
     decrementing a storage position in the hardware TCAM of a second TCAM table entry corresponding to the headmost first TCAM table entry in the Poslist by 1, and taking this storage position as a maximum storage position (maxID) for the second TCAM table entry to be added to be freely movable in the hardware TCAM; 
     S 2026 : determining a storage position of the second TCAM table entry to be added in the idle resources of the hardware TCAM, according to the minimum and maximum storage positions obtained in step S 2025 . 
     Additionally, it may be preferable, after step S 2025 , to judge whether there is any idle resource in the current hardware TCAM through a preset counter for counting idle resources between the minID and the maxID. Only when the judgment result indicates that there is an idle resource, the procedure will go to step S 2026 . 
     The inventor finds that correlation exists between table entries that shall keep a strict precedence relationship among the second TCAM table entries stored in the current hardware TCAM. Accordingly, in step S 2023 , in the virtual TCAM list, the process of determining other first TCAM table entries related to the first TCAM table entry to be added is a process of determining first TCAM table entries having a strict precedence relationship with the first TCAM table entry to be added. 
     An embodiment of the present invention determines whether there is correlation between the first TCAM table entry to be added and other first TCAM table entries in the virtual TCAM list under the condition that the first TCAM table entries do not concern layer 4 port number information, and the determination is made by judging whether there is correlation between the data contents of the first TCAM table entry to be added and of other first TCAM table entries as follows. 
     Firstly, the data contents of the first TCAM table entry to be added and of the other first TCAM table entries in the virtual TCAM list are divided into rule values and masks. 
     In the prior art, each of the second TCAM table entries may be stored in the hardware TCAM in a form of &lt;rule value (i.e., keyword of address), mask&gt; ordered pairs. For the first TCAM table entries one-to-one corresponding to the second TCAM table entries in the hardware TCAM, the data contents recorded in each of the first TCAM table entries are the rule value and the mask contained in the corresponding second TCAM table entries. 
     Secondly, for the first TCAM table entry to be added and a certain first TCAM table entry having been existed in the virtual TCAM list, i.e., other first TCAM table entry, an operation of (N 1 ⊕N 2 )·M 1 ·M 2  is carried out. 
     Herein, N 1  is a rule value of the first TCAM table entry to be added, N 2  is a rule value of the other first TCAM table entry, M 1  is a mask of the first TCAM table entry to be added, and M 2  is a mask of the other first TCAM table entry. 
     The above equation carries out an XOR operation between N 1  and N 2 , and then AND operations with M 1  and M 2  respectively. When the final operation result is 0, it can be judged that the first TCAM table entry is related to the other first TCAM table entry; otherwise the two table entries are not related to each other. 
     The principle of the above equation (N 1 ⊕N 2 )·M 1 ·M 2  is described as follows: the XOR operation between N 1  and N 2  results in a difference between the rule values of the two first TCAM table entries concerned in the operation, then the AND operation between M 1  and M 2  results in the public mask of the two first TCAM table entries concerned in the operation, then if the result of the AND operation between the difference and the public mask is 0, it means that the difference between the rule values of the two first TCAM table entries concerned in the operation is always not related to the rule value of one of the first TCAM table entries, i.e., there is always no intersection between the difference and the rule value of one of the first TCAM table entries concerned in the operation, and thus it can be judged that the two first TCAM table entries concerned in the operation are related to each other. 
     The operation process of the above equation is for example described as follows. 
     It is assumed that the rule value and the mask of the first TCAM table entry to be added are 192.168.5.1 and 255.255.255.255 respectively, and the rule value and the mask of the other first TCAM table entry are 192.168.5.0 and 255.255.255.0 respectively. 
     The rule value of the first TCAM table entry to be added is a subset of the rule value of the other first TCAM table entry from logical relationship. 
     According to the above equation, an XOR operation is carried out between 192.168.5.1 and 192.168.5.0 to obtain a result 0.0.0.1. 
     Then, an And operation is further carried out between the above XOR result 0.0.0.1 and the mask 255.255.255.255 to obtain a result 0.0.0.1. 
     Then, an And operation is further carried out between the above AND result and the mask 255.255.255.0 to obtain a final result 0.0.0.0. 
     The final result of the above operation indicates that the first TCAM table entry to be added and the other first TCAM table entry concerned in the operation are related to each other, which is consistent with the result of judgment from the logical relationship. 
     According to a second embodiment, the contents recorded in the first TCAM table entry includes layer 4 port number information and associated action information, in addition to the above 6 items. This is common in current application of ACL. In this embodiment, the process of judging the correlation between the data contents of the first TCAM table entry to be added and of the other first TCAM table entry is illustrated in  FIG. 4 , including: 
     S 401 : dividing the data contents of the first TCAM table entry to be added and the other first TCAM table entries in the virtual TCAM list into rule values and masks; 
     S 402 : performing an operation of (N 1 ⊕N 2 )·M 1 ·M 2  for the first TCAM table entry to be added and a certain first TCAM table entry having been existed in the virtual TCAM list (one of the other first TCAM table entries), 
     wherein N 1  is a rule value of the first TCAM table entry to be added, N 2  is a rule value of the other first TCAM table entry, M 1  is a mask of the first TCAM table entry to be added, and M 2  is a mask of the other first TCAM table entry, 
     and if the operation result is 0, going to step S 403 ; otherwise going to step S 406 ; 
     S 403 : further determining whether there is an intersection between the layer 4 port number information of the first TCAM table entry to be added and the other first TCAM table entry, and if there is an intersection, going to step S 404 ; otherwise turning to step S 406 ; 
     S 404 : further determining whether the associated action information of the first TCAM table entry to be added and the other first TCAM table entry in the virtual TCAM list is consistent with each other; if not consistent, going to step S 405 , and if consistent, going to step S 406 ; 
     S 405 : determining that the first TCAM table entry to be added is related to the other first TCAM table entry; and 
     S 406 : determining that the first TCAM table entry to be added is not related to the other first TCAM table entry. 
     In step S 403 , the description statements of the layer 4 port number information can be compared by a layer 4 port comparator. For example, when the layer 4 port number information of the first TCAM table entry to be added and the other first TCAM table entry both describes conditions larger than a certain port number, they obviously have an intersection, thus it can be determined that the first TCAM table entry to be added is related to the other first TCAM table entry. 
     In step S 404 , the associated action information recorded in the first TCAM table entry is an execution action corresponding to the first TCAM table entry. For example, for the table entry “Premit tcp any any gt 80 any”, “Premit” (i.e., a forwarding is permitted) is the associated action information. In the prior art, there are actions such as discarding message, mirroring, re-orientation, executing a next hop of the route, modifying a certain field of the message, controlling bandwidth, etc. Two first TCAM table entries having the same associated action information are deemed as having no correlation, i.e., there is no strict order between them. 
     The inventor also finds that in the virtual TCAM list, more bits equal to 1 (i.e., less bits equal to 0) exist in the first TCAM table entry, the first TCAM table entry is more likely to be arranged in the front of the virtual TCAM list. With this characteristic, first TCAM table entries with their masks having more bits equal to 1 are allocated to storage positions in the front so far as possible, which can further reduce table entry movement. 
     Based on the above principle, when step S 2026  is carried out, a possible storage position of a second TCAM table entry to be added in the hardware TCAM is firstly calculated through the following equation:
 
tcamID= N *(maxID−minID+1)+minID,
 
     wherein, tcamID is a possible storage position of the second TCAM table entry to be added in the hardware TCAM, N is a ratio between “0” bits in the mask of the first TCAM table entry to be added and a total bit number of the mask, maxID is a maximum storage position for the second TCAM table entry to be added to be freely movable in the hardware TCAM, and minID is a minimum storage position for the second TCAM table entry to be added to be freely movable in the hardware TCAM. 
     Next, when the above possible storage position is not occupied in the hardware TCAM, the calculated possible storage position may be taken as a storage position of the second TCAM table entry to be added in the hardware TCAM; on the contrary, when the above possible storage position has been occupied in the hardware TCAM, an idle storage resource may be further searched upwards or downwards from the calculated possible storage position, and an idle position closest to the calculated possible storage position is selected as a storage position of the second TCAM table entry to be added in the hardware TCAM. 
     In the operation of adding a table entry, after step S 2024 , the following operations may be performed on the first TCAM table entry existed in the virtual TCAM list: 
     adding the first TCAM table entry to be added into the Poslist of each of first TCAM table entries in the Prelist of the first TCAM table entry to be added; and 
     adding the first TCAM table entry to be added into the Prelist of each of first TCAM table entries in the Poslist of the first TCAM table entry to be added. 
     After the first TCAM table entry to be added is inserted into the virtual TCAM list, according to the storage position of the second TCAM table entry to be added in the hardware TCAM, the embodiment of the present invention needs to write the data contents of the second TCAM table entry to be added corresponding to the first TCAM table entry to be added into the storage position. 
     The operation of deleting a second TCAM table entry (hereinafter referred to as a second TCAM table entry to be deleted) from the hardware TCAM is relatively simple and needs to delete from the hardware TCAM the second TCAM table entry to be deleted according to the storage position of the second TCAM table entry to be deleted recorded in the corresponding first TCAM table entry to be deleted. 
     Furthermore, the following series of deleting operations shall be performed for the virtual TCAM list: 
     deleting the first TCAM table entry to be deleted from the Poslist of each of first table entries in the Prelist of the first TCAM table entry to be deleted; 
     deleting the first TCAM table entry to be deleted from the Prelist of each of first table entries in the Poslist of the first TCAM table entry to be deleted; and 
     finally, deleting the first TCAM table entry to be deleted from the virtual TCAM list. 
     Based on the same inventive concept, an embodiment of the invention further provides an apparatus for updating table entries of a TCAM. Because the apparatus uses a principle similar to that adopted by the above method for updating table entries of the TCAM, the implementation of the apparatus will be appreciated based on the implementation of the method, and the repeated contents are not described herein. 
     As illustrate in  FIG. 5 , the apparatus for updating table entries of the TCAM according to the embodiment of the present invention includes: 
     a creating unit  501  configured to create a virtual TCAM list, in which respective first TCAM table entries are one-to-one corresponding to respective second TCAM table entries stored in a hardware TCAM; 
     a storage position determining unit  502  configured to determine, in idle resources of a hardware TCAM, a storage position of the second TCAM table entries to be updated corresponding to the first TCAM table entries to be updated, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and of other first TCAM table entries in the virtual TCAM list; and 
     an updating operation unit  503  configured to perform an updating operation on the second TCAM table entry to be updated in the hardware TCAM, based on the determined storage position. 
     As illustrated in  FIG. 6 , the creating unit  501  further includes: 
     a link list creating sub-unit  5011  configured to create a link list as the virtual TCAM list, in which respective first TCAM table entries are arranged in a pre-specified order and one-to-one corresponding to respective second TCAM table entries stored in the hardware TCAM; 
     a recording sub-unit  5012  configured to record in each of the first TCAM table entry: the data contents of a second TCAM table corresponding to the first TCAM table entry, a storage position in the hardware TCAM of the second TCAM table entry corresponding to the first TCAM table entry, minimum and maximum storage positions for the second TCAM table entry corresponding to the first TCAM table entry to be freely movable in the hardware TCAM, and Prelist and Poslist of the first TCAM table entry. 
     As illustrated in  FIG. 7 , the storage position determining unit  502  further includes: 
     a first storage position determining sub-unit  5021  configured to determine in the virtual TCAM list, a storage position of a first TCAM table entry immediately before a first TCAM table entry to be added corresponding to a pre-specified second TCAM table entry to be added; 
     a correlation judging sub-unit  5022  configured to insert the first TCAM table entry to be added after the determined storage position, record the data contents of the second TCAM table entry to be added in the first TCAM table entry to be added, and determine other first TCAM table entries related to the first TCAM table entry to be added, according to the recorded data contents and data contents of the other first TCAM table entries in the virtual TCAM list; 
     a maximum/minimum storage position determining sub-unit  5023  configured to determine all the first TCAM table entries, which are arranged before the first TCAM table entry to be added and related thereto in the virtual TCAM list, as table entries in the Prelist thereof, determine all the first TCAM table entries, which are arranged after the first TCAM table entry to be added and related thereto in the virtual TCAM list, as table entries in the Poslist thereof, increment a storage position in the hardware TCAM of a second TCAM table entry corresponding to the backmost first TCAM table entry in the Prelist of the first TCAM table entry to be added by 1 and take this storage position as a minimum storage position for the second TCAM table entry to be added to be freely movable in the hardware TCAM, and decrement a storage position in the hardware TCAM of a second TCAM table entry corresponding to the headmost first TCAM table entry in the Poslist by 1 and take this storage position as a maximum storage position for the second TCAM table entry to be added to be freely movable in the hardware TCAM; and 
     a second storage position determining sub-unit  5024  configured to determine a storage position of the second TCAM table entry to be added in the idle resource of the hardware TCAM, according to the minimum and maximum storage positions. 
     The correlation judging sub-unit  5022  is further configured to: 
     divide the data contents of the first TCAM table entry to be added and of another first TCAM table entry in the virtual TCAM list into rule values and masks; 
     perform an operation of (N 1 ⊕N 2 )·M 1 ·M 2  for the first TCAM table entry to be added and the other first TCAM table entry, wherein N 1  is the rule value of the first TCAM table entry to be added, N 2  is the rule value of the other first TCAM table entry, M 1  is the mask of the first TCAM table entry to be added, and M 2  is the mask of the other first TCAM table entry; and 
     judge that the first TCAM table entry is related to the other first TCAM table entry when the operation result is 0; otherwise judge the two table entries are not related to each other. 
     The correlation judging sub-unit  5022  is further configured to: 
     divide the data contents of the first TCAM table entry to be added and of another first TCAM table entry in the virtual TCAM list into rule values and masks; 
     perform an operation of (N 1 ⊕N 2 )·M 1 ·M 2  for the first TCAM table entry to be added and the other first TCAM table entry, wherein N 1  is the rule value of the first TCAM table entry to be added, N 2  is the rule value of the other first TCAM table entry, M 1  is the mask of the first TCAM table entry to be added, and M 2  is the mask of the other first TCAM table entry; and 
     judge that the first TCAM table entry is not related to the other first TCAM table entry when the operation result is not equal to 0; otherwise further judge whether there is an intersection between the layer 4 port number information of the first TCAM table entry to be added and the other first TCAM table entry; if there is no intersection, judge that the first TCAM table entry to be added is not related to the other first TCAM table entry; if there is an intersection, further judge whether the associated action information of the first TCAM table entry to be added and the other first TCAM table entry in the virtual TCAM list is consistent with each other, and if not consistent, judge that the first TCAM table entry to be added is related to the other first TCAM table entry, or if consistent, judge that the first TCAM table entry to be added is not related to the other first TCAM table entry. 
     Further, the second storage position determining sub-unit  5024  is configure to: 
     calculate a possible storage position of a second TCAM table entry to be added in the hardware TCAM through the following equation:
 
tcamID= N *(maxID−minID+1)+minID,
 
     wherein, tcamID is a possible storage position of the second TCAM table entry to be added in the hardware TCAM, N is a ratio between “0” bits in the mask of the first TCAM table entry to be added and a total bit number of the mask, maxID is the maximum storage position, and minID is the minimum storage position; 
     judge whether the calculated possible storage position is an idle resource of the TCAM, and if the judgment result is “yes”, take the calculated possible storage position as a storage position of the second TCAM table entry to be added in the hardware TCAM, or if not, take a storage position of an idle resource closest to the calculated possible storage position as a storage position of the second TCAM table entry to be added in the hardware TCAM. 
     The maximum/minimum storage position determining sub-unit  5023  is further configured to add the first TCAM table entry to be added into the Poslist of each TCAM table entry in the Prelist of the first TCAM table entry to be added, and add the first TCAM table entry to be added into the Prelist of each TCAM table entry in the Poslist of the first TCAM table entry to be added. 
     The updating operation unit  503  is further configured to, according to the storage position of the second TCAM table entry to be deleted recorded in a first TCAM table entry to be deleted corresponding thereto, delete from the hardware TCAM the second TCAM table entry to be deleted at the recorded storage position. 
     The updating operation unit  503  is further configured to delete the first TCAM table entry to be deleted from the Poslist of each first table entry in the Prelist of the first TCAM table entry to be deleted, delete the first TCAM table entry to be deleted from the Prelist of each first table entry in the Poslist of the first TCAM table entry to be deleted, and delete the first TCAM table entry to be deleted from the virtual TCAM list. 
     The method and apparatus for updating table entries of a TCAM according to the embodiments of the present invention use the one-to-one correspondence between respective first TCAM table entries in the created virtual TCAM list and respective second TCAM table entries in the hardware TCAM, to determine a storage position of the second TCAM table entry to be updated corresponding to the first TCAM table entry to be updated in the idle resources of the hardware TCAM, according to a pre-specified precedence relationship between the storage positions of the first TCAM table entry to be updated and other first TCAM table entries in the virtual TCAM list, and perform an updating operation on the second TCAM table entry to be updated in the hardware TCAM based on the determined storage position. 
     According to the embodiments of the present invention, the selection of the storage position of the second TCAM table entry to be updated is made within the idle positions in the hardware TCAM so far as possible, which avoids the problem in prior art that when a second TCAM table entry of the hardware TCAM is directly updated, since the second TCAM table entries of the hardware TCAM are usually stored in a continuous storage space, in order to ensure the precedence relationship between the second TCAM table entry to be updated and other second TCAM table entries, a lot of related second TCAM table entries have to be moved when the second TCAM table entry to be updated causes a position collision, and thus the efficiency in updating the table entries of the hardware TCAM is lower because a lot of second TCAM table entries are rewritten. 
     Further, according to the embodiments of the present invention, the correlation between the first TCAM table entry corresponding to the second TCAM table entry to be updated and other first TCAM table entries in the virtual TCAM list is identified, so that when the second TCAM table entry to be updated causes a position collision, only table entries related to the second TCAM table entry to be updated, which have a strict precedent relationship with the second TCAM table entry to be updated, are moved even there is no idle resource for selection and it is inevitable to move the second TCAM table entries, without moving table entries unrelated to the second TCAM table entry to be updated, which have no strict precedence relationship with the second TCAM table entry to be updated, thereby greatly decreasing the number of the second TCAM table entries that may be moved, and further overcoming the problem of a low efficiency in updating the table entries of the current hardware TCAM. 
     Apparently, a person skilled in the art can make various changes and modifications to the present invention without deviating from the spirit and the scope of the present invention. Thus, when these changes and modifications to the present invention fall within the scope of the claims and their equivalents, the present invention also intends to cover these changes and modifications.