Abstract:
The invention provides a method and system for routing information lookup for packets using routing protocols such as IP or IP multicast (IGMP), or MPLS (multiprotocol label switching, also known as tag switching or label switching) or MPLS multicast, in which both the destination address and the length of that destination address are matched using a lookup table having separate entries for selected addresses and their lengths, which can be accessed in parallel for multiple representations of destination addresses, and in which the input interface associated with the packet is included in the information used for matching.

Description:
This application is submitted in the name of the following inventor: 
     
       
         
               
               
               
             
           
               
                   
               
               
                 Inventor 
                 Citizenship 
                 Residence Address 
               
               
                   
               
             
             
               
                 Wilford, Bruce A. 
                 United Kingdom 
                 935 Eastwood Place 
               
               
                   
                   
                 Los Altos, California 94024 
               
               
                   
               
             
          
         
       
     
     The assignee is Cisco Technology, Inc., a California corporation having an office at 170 West Tasman Drive, San Jose CA 95134. 
     Title of Invention 
     Enhanced Internet Packet Routing Lookup 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to packet switching. 
     2. Related Art 
     In a packet-switched network, a “router” is a device which receives packets on one or more input interfaces and which outputs those packets on one of a plurality of output interfaces, so as to move those packets within the network from a source device to a destination device. Each packet includes header information which indicates the destination device (and other information), and the router includes routing information which associates an output interface with information about the destination device (possibly with other information). The router can also perform other operations on packets, such as rewriting the packets according to their routing protocol or to reencapsulate the packets from a first routing protocol to a second routing protocol. It is advantageous for routers to operate as quickly as possible, so that as many packets as possible can be switched in a unit time. 
     One problem which has arisen in the art is that routing lookup, that is, determining an output interface on which to output the packet in response to the header information from the packet, can take substantial processing time, and that the demand on the router from that processing time continues to grow with increased network demand and increased network size. This problem has been exacerbated by addition of more complexity in routing protocols and routing techniques, such as the use of access control lists, network flow switching, quality of service requirements, and of attempts to determine the nature or routing treatment of packets in response to their source. 
     Some known routers, such as those described in U.S. application Ser. No. 08/655,429, “Network Flow Switching and Flow Data Export”, filed May 28, 1996, in the name of inventors Darren Kerr and Barry Bruins, and assigned to Cisco Systems, Inc., attorney docket number CIS-016, now U.S. Pat. No. 6,243,667 and U.S. application Ser. No. 08/771,438, having the same title, filed Dec. 19, 1996, in the name of the same inventors, assigned to the same assignee, attorney docket number CIS-017, now U.S. Pat. No. 6,308,148 determine routing lookup in response to a network “flow” associated with the packet, rather than just in response to the destination address for the packet. This technique, called network flow switching, allows the router to determine routing procedure a single time for the entire flow, and to route all packets for the flow in the same manner. 
     While such routers are able to reduce the number of routing lookup operations required for a sequence of packets in a flow, they do not take advantage of all information available for rapid routing. For a first example, for some packets the amount of packet header information for determining an output interface can be relatively longer or shorter (as in IP protocols, where entire sets of destination addresses can sometimes be assigned to a single output interface). For a second example, for some packets (as in multicast protocols, due to the nature of the multicast tree) the choice of output interface can be responsive to the input interface from which the packet was received. 
     Accordingly, it would be desirable to provide a method and system for performing routing lookup, which is responsive both to the header information associated with a packet and to the length of that header information, and which is makes use of all useful information including an input interface from which the packet was received. These advantages are achieved in an embodiment of the invention in which both the destination address and the length of that destination address are matched using a lookup table having separate entries for selected addresses and their lengths, which can be accessed in parallel for multiple representations of destination addresses, and in which the input interface associated with the packet is included in the information used for matching. 
     SUMMARY OF THE INVENTION 
     The invention provides a method and system for routing information lookup for packets using routing protocols such as IP or IP multicast (IGMP), or MPLS (multiprotocol label switching, also known as tag switching or label switching) or MPLS multicast, in which both the destination address and the length of that destination address are matched using a lookup table having separate entries for selected addresses and their lengths, which can be accessed in parallel for multiple representations of destination addresses, and in which the input interface associated with the packet is included in the information used for matching. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows information for an example packet using an MPLS protocol. 
     FIG. 2 shows a process flow diagram of a method of operating the system. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     In the following description, a preferred embodiment of the invention is described with regard to preferred process steps and data structures. Those skilled in the art would recognize after perusal of this application that embodiments of the invention can be implemented using general purpose processors or special purpose processors or other circuits adapted to particular process steps and data structures described herein, and that implementation of the process steps and data structures described herein would not require undue experimentation or further invention. 
     Inventions described herein can be used in conjunction with inventions described in the following applications: 
     application Ser. No. 08/918,505, filed the same day, Express Mail Mailing No. EM337222825US, in the name of the same inventor, titled “Multiprotocol Packet Recognition and Switching”, attorney docket number CIS-020A, now U.S. Pat. No. 6,157,641; and 
     application Ser. No. 08/917,654, filed the same day, Express Mail Mailing No. EM166118235US, in the name of the same inventor, titled “Multiple Parallel Packet Routing Lookup”, attorney docket number CIS-020B, now U.S. Pat. No. 6,212,183. 
     Each of these applications is hereby incorporated by reference as if fully set forth herein. 
     System For Enhanced Internet Packet Routing Lookup 
     A system for enhanced internet packet routing lookup includes a multiprotocol packet recognizer as further described in application Ser. No. 08/918,505, titled “Multiprotocol Packet Recognition and Switching”, attorney docket number CIS-020A, now U.S. Pat. No. 6,308,148 and in application Ser. No. 08/917,654, titled “Multiple Parallel Packet Routing Lookup”, attorney docket number CIS-020B, now U.S. Pat. No. 6,212,183 each of which is hereby incorporated by reference as if fully set forth herein. As more fully described in these incorporated applications, each packet is input to a packet buffer, coupled to a set of encapsulation recognizers and an encapsulation multiplexer, and coupled to a set of longest-match recognizers and a set of longest-match multiplexers, so as to first recognize the type of packet encapsulation and to second recognize relevant packet header information for routing the packet. 
     FIG. 1 shows information for an example packet using an MPLS protocol. 
     As used herein, “MPLS” refers to multiprotocol label switching, also known as “tag switching” or “label switching”, as defined in RFC 2105, “Cisco Systems&#39; Tag Switching Architecture Overview”, by Y. Rekhter, D. Katz, E. Rosen, and G. Swallow (February 1997), which document describes label formats and packet formats, and is hereby incorporated by reference as if fully set forth herein. 
     1. MPLS Packet Header 
     The information for the example packet includes an example packet header  100 . In the case where the packet is encapsulated using an MPLS protocol, the packet header  100  includes a set of line information  101 , a destination address (DA)  102 , a source address (SA)  103 , a fixed code  104  indicating that the packet is encapsulated using MPLS, and an MPLS label  105 , followed by a sequence of words in continuation of the packet. 
     In a preferred embodiment, the line information  101  includes information about how the packet was received, including an input interface identifier  106  for an input interface associated with the packet. 
     In a preferred embodiment, the fixed code  104  indicating that the packet is encapsulated using MPLS comprises the value hexadecimal 88 47 (for MPLS unicast) or the value hexadecimal 88 48 (for MPLS multicast). 
     The MPLS label  105  includes information as specified by the MPLS protocol. 
     In a preferred embodiment, additional information is included with the packet header  100  when the packet header  100  is coupled to the longest-match recognizers, including a checksum value (CHK)  107  associated with the packet header  100  and computed by a checksum element. 
     Computation of the checksum value CHK  107  is further described in application Ser. No. 08/918,505, titled “Multiprotocol Packet Recognition and Switching”, attorney docket number CIS-020A, now U.S. Pat. No. 6,576,641 and in application Ser. No. 08/917,654, titled “Multiple Parallel Packet Routing Lookup”, attorney docket number CIS-020B, now U.S. Pat. No. 6,212,183 each of which is hereby incorporated by reference as if fully set forth herein. As more fully described in these incorporated applications, the checksum value CHK  107  includes one bit for each type of packet header protocol recognized by the encapsulation recognizers. In a preferred embodiment, this includes one bit for a correct IP checksum and correct packet header length, one bit for a correct CLNS checksum and correct packet header length, and one bit for just a correct packet header length. Since the MPLS protocol does not specify a checksum value, the latter bit is checked only for indicating correct packet header length. 
     2. Packet Header Information 
     The information for the example packet includes a set of packet header information  110  gleaned by operation of the encapsulation recognizers and encapsulation multiplexer in response to the example packet header  100 . 
     In a preferred embodiment, the packet header information  110  includes the checksum value CHK  107 , the input interface identifier  106 , a 20-bit label value  111 , a three-bit class of service (COS) value  112 , a one-bit top of stack (TOS) value  113 , and a eight-bit time-to-live (TTL) value  114 . 
     As described herein, the input interface identifier  106  comprises a value which identifies the input interface associated with the packet (that is, on which the packet was received). 
     As described herein, the checksum value CHK  107  is computed by the checksum element and simply confirms that a length of the packet header  100  in bytes is the same as specified in the packet header  100  itself. 
     As specified by the MPLS protocol, the 20-bit label value  111  includes information for routing the packet to an output interface. 
     As also specified by the MPLS protocol, other values comprising in the packet header information  110 , including the class of service value COS  112 , the type of service value TOS  113 , and the time-to-live value TTL  114 , are relevant to treatment of the packet but in a preferred embodiment do not effect the choice of output interface to which to route the packet. However, in alternative embodiments, the other values may be used to distinguish between different output interfaces which are coupled to differing routes to the destination. For example, the class of service value COS  112  might be used to distinguish between a relatively high-priority traffic route and a relatively low-priority traffic route. 
     3. MPLS Routing Information 
     The information for the example packet includes a set of example routing information  120  gleaned by operation of the longest-match recognizers and longest-match multiplexers in response to the example packet header information  110 . 
     The routing information  120  includes the input interface identifier  106  and the label value  111 . For packets which use an MPLS multicast protocol, the input interface identifier  106  is needed for routing the packet; for packets which use an MPLS unicast protocol, the input interface identifier  106  is generally not needed for routing the packet. 
     Method of Operation 
     FIG. 2 shows a process flow diagram of a method of operating the system. 
     A method  200  of operating the system is controlled by elements described in the application Ser. No. 08/918,505, titled “Multiprotocol Packet Recognition and Switching”, attorney docket number CIS-020A, now U.S. Pat. No. 6,157,641 and in application Ser. No. 08/917,654, titled “Multiple Parallel Packet Routing Lookup”, attorney docket number CIS -020B, now U.S. Pat. No. 6,212,183 each of which is hereby incorporated by reference as if fully set forth herein. The operation of those elements is fully described therein. The method  200  includes flow points and process steps as described herein. 
     At a flow point  210 , a packet using an MPLS protocol has arrived at an input interface, and is ready for processing. 
     At a step  221 , a packet header  100  for the packet is identified and coupled to the packet buffer. 
     At a step  222 , the packet header  100  is coupled from the packet buffer to the encapsulation recognizers. In the case where the packet is encapsulated using an MPLS protocol, the packet header  100  includes the packet header information  110  described herein with reference to FIG.  1 . In the case where the packet is encapsulated using an MPLS protocol, the packet header  100  is recognized by at least one encapsulation recognizer configured to recognize those packets which are so encapsulated. 
     At a step  223 , the at least one encapsulation recognizer configured to recognize packets using the MPLS protocol, along with the encapsulation multiplexer, collectively recognize and parse the packet header  100 , so as to produce the packet header information  110 . 
     At a step  224 , the packet header information  110  is coupled from the encapsulation multiplexer to the longest-match recognizers. In the case where the packet is encapsulated using an MPLS protocol, the packet header information  110  includes the routing information  120  described herein with reference to FIG.  1 . In the case where the packet is encapsulated using an MPLS switching protocol, the packet header information  110  is recognized by at least one longest-match recognizer configured to recognize MPLS protocol information. 
     At a step  225 , the at least one longest-match recognizer configured to recognize the MPLS protocol information, along with at least one longest-match multiplexer, collectively recognize and parse the packet header information  110 , so as to produce the routing information  120 . 
     At a step  226 , the routing information  120  is used for routing lookup for the packet. The routing lookup is responsive to the routing information  120 , and is thus responsive to both the input interface identifier  106  and to the label value  111 . In one embodiment, the routing lookup involves generating a hash key from the routing information and using the hash key to index to routing lookup tables. 
     At a flow point  230 , routing of the packet has been accomplished, and the system is ready to route another packet. 
     Alternative Embodiments 
     Although preferred embodiments are disclosed herein, many variations are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those skilled in the art after perusal of this application.