BOOSTER FOR RAPID NETWORK ACCELERATION
FIELD AND BACKGROUND OF THE INVENTION
The present invention relates to a booster for rapid network acceleration, and in particular, to a booster for facilitating rapid transfer of traffic within a LAN (local area network) and WAN (Wide Area Network).
Local area networks (LAN) are widely used for communication between computers which are relatively physically close to each other, or "local". Depending upon the type of network protocol according to which network traffic is directed, various types of hardware devices are used to physically connect each computer to a transport medium, such as a wire. The computers can then communicate by exchanging data. For example, in a client-server system, a plurality of clients could request services from a server. As its name suggests, a LAN is restricted to computers, printers and other devices which are in close physical proximity. In order for the devices on a LAN to communicate with computers or other devices which are physically farther away, the LAN must be connected to a WAN (wide area network) or the Internet through a gateway, which is a router. The router determines a route according to which packets should travel within the network, both to the WAN and between segments of the LAN. Thus, routers often direct both LAN-to-LAN traffic and LAN-to-WAN traffic.
Unfortunately, routers can become overwhelmed with LAN-to-LAN traffic, thereby significantly reducing the performance of the LAN, as well as degrading the performance of high speed WAN networks such as those operating according to the ATM protocol. The problem is particularly acute for software routers, which although highly flexible for determining routes for packet transmission, are relative slow compared to hardware routers. On the other hand, hardware routers may lack flexibility, for example if such routers lack features such as routing protocols. Thus, the operation of the network may be significantly slowed by the router.
Therefore, there is an unmet need for, and it would be highly useful to have, a booster for intercepting packets being sent to the router, for forwarding those packets for which forwarding address information is available, for passing those packets for which forwarding address information is not known to the router, and for passing management and routing protocol packets to the router.
SUMMARY OF THE INVENTION
The system of the present invention includes a back router connected to a booster, which is in turn connected to a plurality of clients. The booster preferably supports hardware-based routing of various types of packets, including IP packets. If the destination of the packet is outside the subnet to which the booster is attached and routing information for the destination of the packet is known to the booster, then the packet is routed by the hardware- based router. Alternatively, if the routing information of the packet is not known, then the packet is forwarded to the back router, and is then routed by the back router. Optional forwarding information may include policies, QOS (quality of service) information about the quality of service is which is supported, and security information, if such forwarding information is known to the booster.
If the destination of the packet is on the same subnet as the booster, then the booster forwards the packet according to bridging information.
According to the present invention, there is provided a system for accelerating a network for transporting packets, each packet featuring a layer 3 destination address and a layer 3 source address, the network featuring a plurality of subnets, the system comprising: (a) a client for sending and receiving packets, the client being connected to a first of the plurality of subnets; (b) a back router for receiving packets through the first of the plurality of subnets, the back router routing a packet through the network if the packet has a layer 3 destination address outside of the first of the plurality of subnets;
and (c) a booster transparently connected between the back router and the client through the first of the plurality of subnets, such that the booster is transparent to the back router and the client, the booster receiving the packet from the client through the first of the plurality of subnets, such that if the layer 3 destination address is outside of the first of the plurality of subnets and the booster has the layer 3 destination address, the booster performs the routing procedure for the packet directly, and alternatively if the booster does not have the layer 3 destination address, the booster passes the packet to the back router for routing. According to another embodiment of the present invention, there is provided a booster for routing a packet, the packet featuring a destination address, the booster being in communication with at least one client and the booster being in communication with a back router, the booster, the client and the back router being connected in a first subnet of a network featuring a plurality of subnets, the destination address being located on the network and outside the first subnet, the booster comprising: (a) a line interface for being connected to the first subnet; (b) at least one software control module for determining layer 3 address routing information about the destination address by sending a software management request to the back router; (c) an FFIB for storing the layer 3 address routing information about the destination address, the FFIB being updated by the software control module; and (d) a programmable ASIC for forwarding the packet, such that the programmable ASIC routes the packet according to the destination address and according to the FFIB, such that if the destination address is stored in the FFIB, the packet is directly routed to the destination address, and such that if the destination address is not stored in the FFIB, the programmable ASIC forwards the packet to the back router.
According to yet another embodiment of the present invention, there is provided a method for automatically forwarding a packet according to a destination address of the packet, the method being operated by a booster in
conjunction with a back router, the booster and the back router being connected on a subnet of a network, the method comprising the steps of: (a) determining if the destination address of the packet is located on the subnet of the network; (b) if the destination address of the packet is located outside the subnet of the network, determining if layer 3 address routing information is stored in the booster for the destination address of the packet; (c) if the layer 3 address routing information is stored in the booster, routing the packet according to the layer 3 address routing information; (d) if the layer 3 address routing information is not stored in the booster, forwarding the packet to the back router; (e) sending a software management request to the back router by the booster to obtain the layer 3 address routing information; and (f) receiving the layer 3 address routing information from the back router by the booster.
Hereinafter, the term "computing platform" refers to a particular computer hardware system or to a particular software operating system. Examples of such hardware systems include those with any type of suitable data processor. Examples of such software operating systems include, but are not limited to, FreeBSD and one of the Windows™ operating systems by Microsoft Inc. (Seattle, Washington, USA), preferably Windows CE™, or any other type of suitable software operating system capable of supporting a back router and/or the booster of the present invention. For the present invention, a software application could be written in substantially any suitable programming language, which could easily be selected by one of ordinary skill in the art. The programming language chosen should be compatible with the computing platform according to which the software application is executed. Examples of suitable programming languages include, but are not limited to, C, C++ and Java. Furthermore, the functions of the present invention, when described as a series of steps for a method, could be implemented as a series of software instructions for being operated by a data processor, such that the present invention could be implemented as software, firmware or hardware.
Hereinafter, the term "back router" refers to any type of router, such as those routers available from Cisco™.
BRIEF DESCRIPTION OF THE DRAWINGS The invention is herein described, by way of example only, with reference to the accompanying drawings, wherein:
FIG. 1 is a schematic block diagram illustrating an exemplary system according to the present invention;
FIG. 2 is a schematic block diagram showing the booster according to the present invention; and
FIG. 3 is a schematic block diagram showing a portion of the booster of Figure 2 in greater detail.
DESCRIPTION OF THE PREFERRED EMBODIMENTS The system of the present invention includes a back router connected to a booster, which is in turn connected to a plurality of clients. The booster preferably supports hardware-based routing of various types of packets, including IP packets. If the destination of the packet is outside the subnet to which the booster is attached and routing information for the destination of the packet is known, then the packet is routed by the hardware-based router.
Alternatively, if the routing information of the packet is not known, then the packet is forwarded to the back router, and is then routed by the back router. Optional forwarding information may include policies, QOS (quality of service) information about the quality of service which is supported, and security information.
If the destination of the packet is on the same subnet as the booster, then the booster forwards the packet according to bridging information.
The principles and operation of the booster according to the present invention may be better understood with reference to the drawings and the accompanying description.
Referring now to the drawings, Figure 1 is a schematic block diagram illustrating an exemplary system according to the present invention. A system 10 features a router 12 which is connected to a plurality of clients 14, here illustrated as work stations, in a subnet of a network. The network could be a local area network (LAN) or a wide area network (WAN) for example. Clients 14 could be substantially any type of device which is capable of receiving packets from router 12. According to the background art, router 12 routes packets between clients 14 which are not located on the same subnet when router 12 operates alone. In addition, router 12 also learns routing information from routing protocols such as RIP, or OSTS. For system 10, however, router 12 operates in conjunction with a booster 16, such that clients 14 are connected to router 12 through booster 16 and the routing operations can be controlled by the user through router 12, such that the presence of booster 16 is transparent to the user. Thus, as described herein, router 12 can be described as a "back router" since the configuration is still controlled by the user through router 12, while booster 16 is preferably substantially completely auto-configurable.
Preferably, all of the exit ports of router 12 are connected to booster 16, such that all packets pass from router 12 through booster 16, and such that booster 16 receives all packets from clients 14 before these packets are passed to router 12. This preferred implementation is easier for the user to configure and to manage, since the user would not necessarily to change the configuration of router 12. In this preferred implementation, booster 16 can select a particular port of router 12 to which packets are forwarded when booster 16 does not have the destination address of the packet stored in a database, according to the level of traffic on each port of router 12. This also improves stability of the network.
Preferably, booster 16 is transparently connected to router 12 and clients 14. Hereinafter, the term "transparently" refers to the automatic configuration and interaction of booster 16 and router 12 and clients 14, such
that router 12 and clients 14 operate substantially independently of booster 16, without alterations to their configuration or operation.
Booster 16 is a combination of hardware and software components for both bridging and forwarding packets according to their link layer (layer 2) addresses, and for routing packets according to layer 3 forwarding information stored in databases within booster 16 (see Figures 2 and 3 for more details). As used herein, the term "link layer address" could be the code which is automatically given to each Ethernet network interface card (NIC) by the manufacturer, for example. It should be noted that although the following description centers upon routing packets according to the IP protocol, other types of routable protocols could be used with the present invention, such that the present invention is not intended to be limited only to the IP routable protocol. Therefore, other types of destination addresses for these other types of routable protocols could also be used with the present invention. These other types of destination addresses are generally described herein as "layer 3 addresses".
In addition to bridging packets to destinations on the same subnet to which booster 16 is attached, booster 16 is able to route packets to destinations outside this subnet, if the destination IP (layer 3) address is stored in one of the databases within booster 16. The process according to which booster 16 learns the destination IP (layer 3) address for forwarding the packet is described in greater detail with regard to Figure 2 below. If the destination IP address is not stored in a database of booster 16, then booster 16 passes the packet to router 12 for routing to the next hop. As shown in Figure 2, booster 16 has a number of components which enable booster 16 to bridge and forward packets within the subnet and to route packets to a different subnet, including both hardware and software components. A line interface 20 provides a direct physical connection to the physical medium of the network. Data transmissions are received through line interface 20. Line interface 20 is connected to a programmable ASIC 22.
Programmable ASIC 22 is connected to a fast forwarding information base (FFIB) 24 which is a hardware component for rapidly forwarding, marking or discarding packets. Programmable ASIC 22 is also connected to a bus 26, which is in turn connected to a CPU 28. Line interface 20, programmable ASIC 22 and FFIB 24 together form a port of booster 16. Optionally and preferably, booster 16 contains a plurality of such ports 21.
FFIB 24 maintains layer 2 bridging and forwarding information, as well as layer 3 routing information. Preferably, FFIB 24 also maintains such information as quality of service information and security information, which are optionally used to determine rules for the operation of FFIB 24.
The operation of booster 16 with regard to unicast packet flow is now described in detail according to Figures 1 and 2. Through line interface 20, CPU 28 automatically detects the link layer address of the router port which is to be accelerated, and writes this information through programmable ASIC 22 to FFIB 24. Packets are received by line interface 20, and then pass to programmable ASIC 22. If the link layer destination address of a packet matches a link layer address stored in FFIB 24 as the link layer address of a port of router 12 which is to be accelerated, then programmable ASIC 22 searches FFIB 24 for layer 3 routing information. If such layer 3 routing information is available in FFIB 24, programmable ASIC 22 then routes the packet according to this information.
First, programmable ASIC 22 substitutes the destination link layer address according to the information stored in FFIB 24. Next, the TTL (time to live) field is decremented. Optionally, the frame is discarded if necessary. The checksum is then incremented by using one's complement addition. The source link layer address is then substituted. For example, the source address could be determined according to the identity of the appropriate port on router 12. The frame is then sent to the destination address.
According to a preferred embodiment of the present invention, programmable ASIC 22 also searches FFIB 24 for policy information, such as
security policy information and quality of service policy information. Programmable ASIC 22 then handles the packet also according to this policy information. For example, if the security policy information indicates that the packet should be discarded, programmable ASIC 22 discards the packet. Quality of service information (QOS) determines a service which should be performed for the packet. Such a service is preferably selected from the group consisting of marking the packet, holding the packet in a queue and discarding the packet, according to a priority of the packet. These services are performed for traffic shaping. The identity of the software application which generated the packet is optionally used in order to determine the service. For example, packets generated by an application which produces a video stream could optionally be given priority for transmission through the network. Programmable ASIC 22 is able to perform such services more rapidly than router 12, since programmable ASIC 22 is hardware-based rather than software-based.
If layer 3 routing information is not available in FFIB 24, programmable ASIC 22 then forwards the packet to router 12 for traditional routing procedure.
If the link layer address is not an address of a router port to be accelerated, then programmable ASIC 22 performs the bridging operation by quickly sending the packet through some line interface 20 to a client 14, although not necessarily the identical line interface 20 through which the packet was received if booster 16 contains a plurality of ports 21.
ASIC 22 performs this rapid bridging according to the destination address. This is an example of the link layer address (layer 2) bridging mechanism of booster 16 of the present invention, which is performed according to link layer address and exit port information stored in FFIB 24.
FFIB database 24 stores two types of information related to the destination addresses of packets: link layer (layer 2) addresses and layer 3 addresses such as IP addresses. Preferably, each type of information is stored
in a separate Patricia tree data structure. More preferably, the information in each Patricia tree data structure is maintained according to a separate aging mechanism, since the layer 2 addresses and the layer 3 addresses stored in each tree are separate types of information. Patricia trees are a particularly preferred data structure for storing the addressing information, since the Patricia tree is a database structure which operates by bits difference. Thus, the number of addresses which must be searched is relatively small, as well as permitting the best match to the address to be found. According to a particularly preferred embodiment of the present invention, broadcast packets are broadcast through a virtual domain. Optionally and more preferably, packets of an unknown type are also handled according to this procedure. The virtual domain is a group of ports 21 which lie on the same subnet. This group of ports 21 is automatically detected. Preferably, all broadcast packets and all packets of unknown type are sent as point-to-multipoint transmissions through the virtual domain.
As described now also with regard to Figure 3, the software components of booster 16 include a forwarding information database 30 which is in communication with FFIB 24 through programmable ASIC 22. Forwarding information database 30 in turn communicates with several other software components, including a telnet parser 32, an SNMP manager 38, an ARP table 34 and a routing table 36. The configuration of booster 16 is controlled by a configuration manager 40. These components enable the correct information for forwarding packets to be stored in FFIB 24, and could be collectively described as a software control module for maintaining and updating the information stored in FFIB 24, either directly (forwarding information database 30) or indirectly (telnet parser 32, SNMP manager 38, ARP table 34 and routing table 36).
The operation of these components is as follows. Forwarding information database 30 transmits the forwarding information to FFIB 24 for
storage. In order to obtain this forwarding information, forwarding information database 30 must learn the information as follows. Forwarding information database 30 learns the remote route destination information for layer 3 addresses from routing table 36. Each entry into routing table 36 preferably features an IP (routable protocol) address, the mask, the active protocol for that entry, the last time that the forwarding path was changed, and the parameters for forwarding. These parameters include the next hop to be made by the packet, the link layer address for that hop, and the identity of the switch port for the destination link layer address. In addition, preferably RIP information is stored for the entry, as well as an aging counter for receiving services.
Routing table 36 obtains the layer 3 address information through a software management request, preferably from SNMP manager 38. SNMP manager 38 uses SNMP commands to communicate with router 12. For example, SNMP manager 38 receives the routing table from router 12, by using the SNMP "get" command to request the routing table from router 12. More preferably, SNMP manager 38 requests the routing table according to a predefined polling interval. Preferably, the polling interval is sensitive to changes in the topology of the network. Optionally and preferably, SNMP manager 38 reconfigures router 12 through SNMP commands such as the "set" command for changing one or more configuration parameters.
ARP table 34 features the resolution between the layer 2 address and the corresponding layer 3 address for layer 3 destination addresses which are locally attached to booster 16. ARP table 34 learns such resolution information from sniffing responses to ARP requests being sent by router 12, in order to determine the resolution information. Such responses are examples of control messages. As used herein, the term "control message" refers to a message, such as a reply to an ARP request, which is used to determine the location of other nodes (destination addresses) on the network.
Thus, layer 3 addresses are not required by booster 16 for participating in the ARP protocol. Forwarding information database 30 receives the information contained in the ARP responses from ARP table 34.
Telnet parser 32 is responsible to obtain policy information, such as security policy and quality of service policy information, from router 12. The policy information is obtained through a connection between telnet parser 32 and router 12 performed according to the telnet protocol. Optionally and preferably, telnet parser 32 reconfigures router 12, again through this connection performed according to the telnet protocol. Telnet and SNMP are examples of software management protocols for requesting information, such as the routing table, quality of service information and security information from router 12 according to the present invention.
Optionally and preferably, a router port detection module 42 is also featured. Router port detection module 42 is responsible for detecting the configuration of each port of router 12 and at least one interface (link layer and layer 3 addresses) of each port of router 12. Router port detection module 42 employs discovery protocols such as ICMP information requests (type 15) and address mask request messages (type 17), or SNMP messages, to each port of router 12. Router port detection module 42 then interprets the reply messages. According to a second preferred option, router port detection module 42 uses standard routing protocols such as RIP and OSPF to learn about router 12.
Booster 16 learns link layer addresses in a manner similar to any other layer 2 switch, and then stores this information in FFIB 24. Preferably, booster 16 is configured for initial operation according to an auto-configuration process as follows. First, booster 16 detects the conventional router to which it is in communication, which in Figure 1 is router 12. For example, booster 16 could receive an ICMP router discovery message from router 12, or a message according to a protocol such as RIP, OSPF and/or CDP to detect the presence of router 12 . Alternatively, the user
could configure one IP (or other routable protocol) address of router 12, and booster 16 could learn the remaining information from SNMP messages. Next, booster 16 learns the port addresses and masks of router 12. Thus, booster 16 learns the remote route directly by retrieving routing table from router 12 using SNMP as previously described. Additional, optional but preferred information such as security information, QOS (quality of service) information and other policies can be learned from router 12 through telnet as previously described.
While the invention has been described with respect to a limited number of embodiments, it will be appreciated that many variations, modifications and other applications of the invention may be made.