# Patent

## Title
System and method for directing network traffic in tunneling applications

## Abstract

A method, apparatus, and system are directed to managing traffic towards a tunnel in a network. The invention enables a network device, to extract data from a received packet. A deep packet inspection is employed that enables examination of the extracted data at virtually any layer of an OSI layered protocol of the packet. If the extracted data does not satisfy the flow criteria, a second packet may be inspected at a deep packet level to determine whether the data of the first and second packet satisfies the flow criteria. If the extracted data satisfies the flow criteria a tunnel is determined based, in part, on the flow criteria. The packet is associated with and forwarded towards the determined tunnel.

## Background
RELATED APPLICATIONS
This application claims the benefit of U.S. Provisional Application No. 60/512,977 filed on Oct. 20, 2003, which is hereby claimed under 35 U.S.C. §119(e).


FIELD OF THE INVENTION
The present invention relates to directing traffic across a computer network, and in particular, to directing traffic to a network tunnel based, in part, on a deep packet inspection.
BACKGROUND
The Internet has evolved into a ubiquitous network and has inspired the development of a variety of new applications in business markets. These new applications have driven the demand for increased and well-defined transmission guarantees in the backbone of the network.
However, the demands placed on the network by these new applications and services, in terms of speed, bandwidth, and the like, have strained the resources of existing networking infrastructures. In addition to the issue of resource constraints, many businesses have demanded the ability to provide differentiated classes and quality of services (QoS) to its consumers. Such differentiated services may include providing various tunneling technologies, such as Internet Protocol Security (IPSec), selective tunnel usage, selective routes or tunnels in a MultiProtocol Label Switching (MPLS) network, and the like, based on a variety of service expectations.
However, many such tunneling technologies are dependent on a restrictive set of further technologies to map packets to a tunnel through the network. For example, differentiated services (diffserv) are commonly employed to limit some types of traffic to some rate or to guarantee some other quality of service. As a mechanism for QoS, diffserv configured routers typically modify Internet Protocol (IP) packet headers in the network traffic in a manner that may be understood by upstream routers. The upstream routers may in turn, be configured to route the packets towards a desired tunnel based, in part, on the modifications in the packet header.
Use of diffserv routers, unfortunately, often results in increased complexity, and cost, to the overall networking infrastructure. Additionally, many diffserv routers currently operate at a layer 3 of the Open Systems Interconnection (OSI) seven layer reference model, further constraining the flexibility of tunnel selection. Thus, there is a need in the industry for alternative approaches to distributing network traffic to selected tunnels. Therefore, it is with respect to these considerations and others that the present invention has been made.



BRIEF DESCRIPTION OF THE DRAWINGS
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified.
For a better understanding of the present invention, reference will be made to the following Detailed Description of the Invention, which is to be read in association with the accompanying drawings, wherein:
FIG. 1 illustrates a system diagram of one embodiment of a system architecture employing differentiated service routers;
FIG. 2 illustrates a system diagram of one embodiment of a system architecture in which the invention may be practiced without differentiated service routers;
FIG. 3 illustrates a block diagram of one embodiment of a network device that may be employed to perform the invention;
FIG. 4 is a flow chart illustrating a process for directing traffic to a network tunnel based, in part, on a deep packet inspection; and
FIG. 5 is an illustrative example of a tunnel determination on XML data, according to one embodiment of the invention.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific exemplary embodiments by which the invention may be practiced. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Among other things, the present invention may be embodied as methods or devices. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
Throughout the specification, the terms “a,” “an,” and “the” include plural references. The meaning of “in” includes “in” and “on.”
The term “or” is an inclusive “or” operator, and includes the term “and/or,” unless the context clearly dictates otherwise.
The phrase “in one embodiment,” as used herein does not necessarily refer to the same embodiment, although it may.
The term “based on” is not exclusive and provides for being based on additional factors not described, unless the context clearly dictates otherwise.
The term “packet” includes an IP (Internet Protocol) packet. The term “flow” includes a flow of packets through a network that typically share a common source and destination.
The term “node” refers to a network element that typically interconnects one or more devices, or even networks.
The terms “comprising,” “including,” “containing,” “having,” and “characterized by,” include an open-ended or inclusive transitional construct and does not exclude additional, unrecited elements, or method steps. For example, a combination that comprises A and B elements, also reads on a combination of A, B, and C elements.
Briefly stated, the present invention is directed to a system and method for directing traffic towards a tunnel in a network. The invention enables a network device to extract data from a received packet. A deep packet inspection is employed that enables examination of the extracted data at virtually any layer of an Open System Interconnection (OSI) layered protocol of the packet. If the extracted data does not satisfy a flow criteria, one or more additional packets may be inspected at the deep packet level to determine whether data from the first and additional packets satisfies the flow criteria. If the extracted data satisfies the flow criteria, a tunnel is determined based, in part, on the flow criteria. Tunnel determination may be based on a load-balancing mechanism, a pre-designated tunnel for the flow criteria, and the like. The packet is associated with, and forwarded towards, the determined tunnel. Subsequent packets associated with the same flow of packets may be forwarded to the same determined tunnel by maintaining a unique identifier associated with the packet.
Illustrative Operating Environment
FIG. 1 shows components of one embodiment of an environment in which the invention may be practiced. Not all the components may be required to practice the invention, and variations in the arrangement and type of the components may be made without departing from the spirit or scope of the invention.
As shown in the figure, system 100 includes client 102, traffic manager 104, diffserv routers 106-107, core routers 108-109, Multiprotocol Label Switching (MPLS) routers 110-111, and Wide Area Network (WAN)/Local Area Network (LAN) 120. Traffic manager 104 is in communication with client 102 and diffserv routers 106-107. Core routers 108-109 are in communication with MPLS routers 110-111 and diffserv routers 106-107. MPLS routers 110-111 are also in communication with WAN/LAN 120. Although not shown, another network, substantially similar to WAN/LAN 120 may reside between and be in communication with traffic manager 104 and client 102.
Client 102 may be any device capable of sending and receiving a packet over a network, and the like, to and from traffic manager 104. The set of such devices may include devices that typically connect using a wired communications medium such as personal computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, and the like. The set of such devices may also include devices that typically connect using a wireless communications medium such as cell phones, smart phones, pagers, walkie talkies, radio frequency (RF) devices, infrared (IR) devices, CBs, integrated devices combining one or more of the preceding devices, and the like. Alternatively, client 102 may be any device that is capable of connecting using a wired or wireless communication medium such as a PDA, POCKET PC, wearable computer, and any other device that is equipped to communicate over a wired and/or wireless communication medium.
Traffic manager 104 includes any device that manages network traffic. Such devices include, for example, routers, proxies, firewalls, load balancers, devices that perform network address translation, any combination of the preceding devices, and the like. Traffic manager 104 may, for example, control the flow of data packets delivered to and forwarded from client 102. Traffic manager 104 may direct a request for a resource at a network address accessible over WAN/LAN 120, and the like, based on network traffic, network topology, capacity of a server, content requested, and a host of other load balancing metrics. Traffic manager 104 may recognize packets that are part of the same communication, flow, and/or stream and may perform special processing on such packets, such as directing them to the same router, service, or the like. Traffic manager 104 may, for example, extract packet information that may be employed in generating a unique identifier for the flow of packets for which the packet is associated. Such packet information may include, but is not limited to, a source address, source port number, destination address, destination port number, a combination of the above, and the like. However, as shown, traffic manager 104 may be constrained to making routing decisions for packets based on header information associated with the packets. Traffic manager 104 may also maintain a persistence table, which stores mappings between the unique identifiers and router, service, and the like.
Traffic manager 104 may be implemented using one or more personal computers, POCKET PCs, wearable computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, cell phones, smart phones, pagers, walkie talkies, radio frequency (RF) devices, infrared (IR) devices, CBs, integrated devices combining one or more of the preceding devices, and the like. Such devices may be implemented solely in hardware or in hardware and software.
WAN/LAN 104 is enabled to employ any form of computer readable media for communicating information from one electronic device to another. In addition, WAN/LAN 104 can include the Internet in addition to local area networks (LANs), wide area networks (WANs), direct connections, such as through a universal serial bus (USB) port, other forms of computer-readable media, and any combination thereof. On an interconnected set of LANs, including those based on differing architectures and protocols, a router acts as a link between LANs, enabling messages to be sent from one to another. Also, communication links within LANs typically include twisted wire pair or coaxial cable, while communication links between networks may utilize analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communications links. Furthermore, remote computers and other related electronic devices could be remotely connected to either LANs or WANs via a modem and temporary telephone link.
As such, it will be appreciated that the Internet itself may be formed from a vast number of such interconnected networks, computers, and routers. Generally, the term “Internet” refers to the worldwide collection of networks, gateways, routers, and computers that use the Transmission Control Protocol/Internet Protocol (“TCP/IP”) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, including thousands of commercial, government, educational, and other computer systems, that route data and messages. An embodiment of the invention may be practiced over the Internet without departing from the spirit or scope of the invention.
The media used to transmit information in communication links as described above illustrates one type of computer-readable media, namely communication media. Generally, computer-readable media includes any media that can be accessed by a computing device. Computer-readable media may include computer storage media, communication media, or any combination thereof.
Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” includes a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, communication media includes wired media such as twisted pair, coaxial cable, fiber optics, wave guides, and other wired media and wireless media such as acoustic, RF, infrared, and other wireless media.
Routers 106-111 include virtually any dedicated network element configured to receive a packet and retransmit it, towards a destination. Routers 106-111 may be used to extend or segment a network by forwarding the packet from one network element to another, or even one logical network to another. Routers 106-111 typically operate at layer 3 and below in the standard OSI reference model for networking. However, some of routers 106-111 may provide additional functionality that operates above layer 3 of the OSI reference model.
As shown in the figure, diffserv routers 106-107 are configured to provide differentiated services for categorizing and prioritizing network traffic. Differentiated services include mechanisms for adding QoS to networking structures such as system 100. Diffsery routers 106-107 may employ values within a layer 3 (IP), layer 4 (TCP/IP) packet headers to tag and identify a particular behavior to be applied by each node to the packet. One such implementation of diffserv routers 106-107 employs an IP type of service (TOS) field within the IP header of the packet as a diffserv byte. Typically, diffserv routers 106-107 operate at layer 3 of the OSI reference model.
Core routers 108-109 include routers that are configured to receive diffserv mapped packets and map the packets to a tunnel. In one embodiment, core routers 108-109 employ the diffserv byte to map the packet to the tunnel. As shown in FIG. 1, the tunnel includes an MPLS tunnel type of infrastructure.
MPLS routers 110-111 may include edge label switching routers (ELSR), and the like, that are configured to perform initial packet processing and classification so that each packet may be routed through an MPLS label switching network (or MPLS tunnel).
Operationally, client 102, another network device, resource, or the like, may forward a packet to traffic manager 104. Traffic manager 104 may employ a variety of mechanisms based on packet header information to forward the packet towards a determined diffserv router (106-107). Once the packet is received by one of diffserv routers 106-107, differentiated services are employed to classify the packet typically by modifying the packet's TOS field. Once the packet is classified by diffserv routers 106-107, these classes of service may be mapped to sets of MPLS tunnels, by core routers 108-109, to complete the architecture illustrated in FIG. 1. However, a limiting factor in MPLS-based quality of service architectures today is the differentiated service protocol employed by diffserv routers 106-107. This is because diffserv routers 106-107 typically are unable to differentiate, and tag, a packet based on higher (deeper) layers of the OSI layered protocol. Thus, as shown in the figure, using differentiated services to define tunnel ingress adds an additional layer of dedicated routers to the architecture, resulting in increased cost, and complexity.
The present invention is directed to addressing the above-mentioned shortcomings, disadvantages and problems, as described below in FIGS. 2 and 4.
FIG. 2 illustrates a system diagram of one embodiment of a system architecture in which the invention may be practiced. Not all the components may be required to practice the invention, and variations in the arrangement and type of the components may be made without departing from the spirit or scope of the invention.
As shown in the figure, system 200 includes client 102, smart tunnel management device (STMD) 204, core routers 108-109, MPLS routers 110-111, and Wide Area Network (WAN)/Local Area Network (LAN) 120. STMD 204 is in communication with client 102 and core routers 108-109. Core routers 108-109 are in communication with MPLS routers 110-111. MPLS routers 110-111 are also in communication with WAN/LAN 120. Although not shown, another network, substantially similar to WAN/LAN 120 may reside between and be in communication with STMD 204 and client 102. A difference between the environment shown in FIG. 1 and that shown in FIG. 2 is that instead of including separate traffic classifications and MPLS labeling routers (diffserv routers and MPLS routers), STMD 204 is configured to include an ability to perform deep packet inspections upon packets within a network. Deep packet inspections enable STMD 204 to classify traffic and direct the traffic towards a determined tunnel, without the need for the additional overhead of diffserv routers.
Deep packet inspection and the generation of flow criteria is described in more detail in U.S. patent application Ser. No. 10/385,790, filed Mar. 10, 2003, and entitled “Method and System for Managing Network Traffic,” which is hereby incorporated by reference. Briefly however, deep packet inspection enables STMD 204 to examine contents of a packet associated with virtually any layer of the OSI layered protocol of the packet, e.g., an HTTP request, an HTTPS request, including Secure Socket Layer (SSL) protocol data, a Session Initiation Protocol (SIP) request, and the like, including a request for an HTML page, a request including a Uniform Resource Locator (URL), eXtensible Markup Language (XML) content, information that identifies a user, such as a cookie, and the like.
Deep packet inspection provides syntax for a set of rules that enable the creation of flow criteria for making tunnel determinations based in part on arbitrary data within any TCP/UDP/IP connection. The flow criteria may include conditional instructions and flow control instructions that enable one to perform actions based on specified conditions.
The rule syntax provides the ability to examine chunks of data, described as offsets and lengths of data, with respect to the TCP, UDP, HTTP payload, and the like. This examination includes supporting arbitrary expressions, including full access to protocol headers, such as TCP, as well as TCP/UDP content, and application data at virtually any layer of the OSI protocol. For example, flow criteria may include a symbolic variable, “HTTP_cookie,” that indirectly causes received data to be buffered. In processing this reference, STMD 204 may buffer more than one packet, to extract the data corresponding to the HTTP cookie. In one embodiment, the number of packets that are buffered is restricted to the number of packets required to identify the referenced data. In another embodiment, the number of packets that are buffered is selectable based on a number of packets, number of bits, a request to access one or more symbolic variables, and the like.
The rule syntax further enables examination of data from a first layer of the OSI layered protocol, and a second layer of the OSI layered protocol of the packet, where the first and second layers are from any of the OSI layers. The rule syntax enables formation of flow criteria that includes examination of data from at least one layer of the OSI layered protocol, at least two different layers, and virtually any combination of data from one or more layers.
In one embodiment, the rule syntax enables access to one or more symbolic variables. Some of the variables may represent data that are available in the IP packet header. The following table illustrates one embodiment of a non-exhaustive set of symbolic variables that are available to generate flow criteria and represent such packet header data.











Variable Name
Description







client_addr
Used to represent a source IP address. This variable 



may be replaced with an unmasked IP address.


server_addr
Used to represent a destination IP address. This 



variable may be replaced with an unmasked IP 



address. The server_addr variable may be used to 



represent the destination address of the packet. This 



variable may also be useful when determining 



a tunnel for traffic towards a wildcard tunnel.


client_port
Used to represent a source port number.


server_port
Used to represent a destination port number.


link_protocol
Used to represent an IP protocol. This variable may be 



replaced with a numeric value representing an IP 



protocol such as TCP, UDP, IPSec, SOCKS, and the 



like.


link_qos
Used to represent a Quality of Service level.


ip_tos
Used to represent a Type of Service (ToS) level.









The following table illustrates one embodiment of a set of symbolic variables that may be employed to generate flow criteria to evaluate layer seven data in a buffered TCP stream, even if it is not part of an HTTP connection.











Variable Name
Description







tcp_content
This variable enables a creation of a basic 



expression that may be employed to load balance, 



persist, and determine a tunnel, based in part on 



arbitrary data within a TCP/IP connection. The



variable returns TCP data content up to a pre-



determined buffer size. This variable may also be 



employed to search for specific strings when 



establishing a non-HTTP connection.


tcp_bytes_collected
This variable returns an amount of content that has 



currently been collected.









The following table illustrates one embodiment of a set of symbolic variables that may be employed to generate flow criteria to evaluate HTTP data.











Variable Name
Description







http_method
This variable specifies an action of the 



HTTP request. Common values include 



GET, POST, and the like.


http_uri
Specifies a URL, but may not include the 



protocol and a fully qualified domain 



name (FQDN). For example, if the URL is 



http://www.uspto.gove/buy.asp, then the 



URI is /buy.asp.


http_version
Specifies an HTTP protocol version string. 



Possible values include “HTTP/1.0”, 



“HTTP/1.1,” and the like.


http_host
Specifies a value in a Host: header of an 



HTTP request. It may indicate that the 



actual FQDN that a source requested. 



Possible values are an FQDN, host IP 



address in dot notation, and the like.


http_cookie(<cookie_name>)
Specifies a value in a cookie: header for a 



specified cookie name. An HTTP cookie 



header line can contain one or more 



cookie name value pairs. The variable 



further evaluates to a value of the cookie



with the name <cookie_name>. For 



example, given a request with the



following cookie header line:



Cookie: green-cookie = 4; blue-cookie = 



horses, The variable http_cookie (“blue-



cookie”) evaluates to the string horses.


http_header(<header_tag_
This variable evaluates the string 


string>)
following the HTTP header tag specified. 



For example, one may specify the 



http_host variable with the http_header 



variable.


http_content[(<minlength>)]
This variable evaluates a string following 



an HTTP content tag that is specified. For 



example, if one wishes to determine a 



tunnel based on the value of the string 



date, the flow criteria might look as 



follows: 



if (findstr (http_content, “date=”,5,6) ==



”052102” {use pool date_pool;



} else if (http_content_collected < 512)



 accumulate;



} else 



 { use pool other_pool}



Note that the http_content variable uses



the content_length or transfer_encoding



fields to determine an available content.


http_content_collected
Returns an amount of content that has 



currently been collected.









In another embodiment of the invention, the following non-exhaustive table of functions is available for use in extracting and manipulating data from the received packets, and in specifying flow criteria, and a unique identifier for maintaining persistence to a determined tunnel.













substr( )
Returns a string starting at an offset specified.


getfield( )
Splits a string on a character, and returns the string



corresponding to a specific field.


findclass( )
Finds a member of a class that contains a result of a



specified expression, and returns that class member.


decode_uri( )
Evaluates an expression and returns a string with any



escape sequences decoded as per HTTP escape sequences



defined in RFC 2396, and the like.


domain( )
Parses and returns up to a specified number of trailing



parts of a domain name from a specified expression.


imid( )
Parses the http_uri variable and user_agent header for an



i-mode TM identifier string that may be used for i-mode



persistence, or the like. This may be employed for i-mode



compatible devices, such as wireless phones.


order( )
Sorts two or more strings in a specified order and



concatenates the results.









To employ the flow criteria generated from the rule syntax, one typically identifies the element or elements, in a packet to be used. This may be achieved, for example, by employing a filter on the output of tcpdump, or employing a network protocol analyzer to examine packets on the wire, and the like. However, the invention is not so limited and virtually any mechanism may be employed, without departing from the scope of the invention.
As one, non-exhaustive, example, for employing flow criteria, one may use a tcp_content attribute to find a SOCKS port value. If the SOCKS port value is located in the packet, the connection may be sent to a pool, such as HTTP_socks, a pre-designated tunnel associated with the SOCKS port value, and the like.
As shown in FIG. 2, STMD 204 is illustrated as a single device. However, the invention is not so limited. For example, STMD 204 may represent a switch fabric comprising a plurality of STMDs. In one embodiment, the plurality of STMDs is arranged in a peer-to-peer configuration.
Although FIG. 2 is described employing MPLS tunnels, the present invention is not so limited, and virtually any tunneling technology may employed without departing from the scope of the invention. For example, SOCKetS (SOCKS) is one such tunneling protocol that may be employed. Client 102 may transmit a packet that includes a TCP header, a SOCKS header, and data. STMD 204 may extract data from one or more fields with the SOCKS header, or from any combination of fields in the SOCKS header, TCP header, application data, and the like. STMD 204 may then employ the extracted data to determine a tunnel based on a load-balancing mechanism, a pre-designated tunnel for SOCKS traffic, and the like. STMD 204 may further generate a unique identifier associated and maintain persistence with packet traffic within the determined SOCKS tunnel.
FIG. 3 illustrates a functional block diagram of one embodiment of a network device in which the invention may be practiced. It will be appreciated that not all components of network device 300 are illustrated, and that network device 300 may include more or less components than those shown in FIG. 3. Network device 300 may operate, for example, as a router, bridge, firewall, gateway, traffic management device, distributor, load balancer, server array controller, or proxy server. The communications may take place over a network, such as network 120 in FIG. 1-2, the Internet, a WAN, LAN, or some other communications network known to those skilled in the art.
As illustrated in FIG. 3, network device 300 includes a central processing unit (CPU) 302, mass memory, and a network interface unit 312 connected via a bus 304. Network interface unit 312 includes the necessary circuitry for connecting network device 300 to a router, such as diffserv routers 106-107 of FIG. 1, core routers 108-109 of FIG. 2, a network, and the like. Network interface unit 312 is constructed for use with various communication protocols including the TCP/IP and UDP/IP protocol. Network interface unit 312 may include or interface with circuitry and components for transmitting packets, and the like, over a wired and/or wireless communications medium. Network interface unit 312 is sometimes referred to as a transceiver, Network Interface Card (NIC), and the like.
The mass memory generally includes random access memory (“RAM”) 306, read-only memory (“ROM”) 314, and one or more permanent mass storage devices, such as hard disk drive 308. The mass memory stores operating system 316 for controlling the operation of network device 300. Operating system 316 may comprise an operating system such as UNIX, LINUXTM, WindowsTM, and the like.
In one embodiment, the mass memory stores program code and data for implementing tunnel manager 318, and related program code and data, in accordance with the present invention. The mass memory may also store additional programs 324 and data for performing the functions of network device 300. Programs 324 may also include applications that are employed by tunnel manager 318 to associate a packet to a determined tunnel, load-balance across tunnels, manage persistence data for maintaining a tunnel determination, and the like.
In one embodiment, network device 300 includes one or more Application Specific Integrated Circuit (ASIC) chips 326 connected to bus 304. As shown in FIG. 3, network interface unit 312 may connect to the bus through ASIC chip 326. ASIC chip 326 includes logic that performs some of the functions of network device 300. For example, in one embodiment, ASIC chip 326 performs a number of packet processing functions, to process incoming packets, determine a tunnel, associate the packets with the determined tunnel, and to forward the packets. In one embodiment, determined actions of determining the tunnel may be performed by ASIC chip 326, a similar hardware device, and the like. In one embodiment, the network device 300 includes one or more field-programmable gate arrays (FPGA) (not shown), instead of, or in addition to, ASIC chip 326. A number of functions of the network device can be performed by ASIC chip 326, by an FPGA, by CPU 302 with the logic of program code stored in mass memory, or by a combination of the ASIC chip and the CPU.
Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules or other data. Examples of computer storage media include RAM 306, ROM 314, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can store the information and that can be accessed by a computing device.
Network device 300 may also include an input/output interface (not shown) for communicating with external devices or users.
Network device 300 can also be implemented as one or more “blades” where the term “blade” refers to one of multiple electronic circuit boards or cards that are installed in a hardware chassis with a backplane. An exemplary blade may include one or more processors, volatile and non-volatile memory, interfaces suitable for communicating information to and from the blade, and other components for enabling the operation of one or more applications. A blade may also include a specialized interface for the backplane and other interfaces, such as a USB port, FIREWIRE port, serial port, RF interface, IR interface, Ethernet interface, IDE controller, and the like. An application running on a blade may employ any of these interfaces to communicate information to other applications running on other blades and/or devices coupled to the blade server. Network device 300 can also be implemented as a combination of blades and additional components in the chassis.
Illustrative Method of Distributing Traffic Towards a Tunnel
FIG. 4 is a flow chart illustrating a process for directing traffic to a network tunnel based, in part, on a deep packet inspection, according to one embodiment of the invention. In one embodiment process 400 is deployed within STMD 204 of FIG. 2.
Process 400 begins after a start block, at block 402, where a packet is received. Typically, the packet is received from a network device, such as client 102 in FIG. 2.
The process next proceeds to decision block 404, where a determination is made whether a tunnel is already determined for the packet. A tunnel may already be determined for the received packet where the packet is associated with a flow of packets that has already been processed by process 400. In such an instance, a tunnel has already been determined, and may persist for the flow of packets. In one embodiment, a unique identifier is extracted from the packet. The unique identifier may include TCP/IP header information, that includes but is not limited to, a source address, a destination address, a source port number, and a destination port number. A search is then performed within a database, file, text, and the like, for a match on the unique identifier. If a match is found, then the associated tunnel is employed for the packet. If a tunnel has already been determined for this packet flow, processing branches to block 414; otherwise, processing continues to block 406.
At block 406, the received packet is added to a buffer that is configured to maintain packet data received within the current communication. Buffering packets may include reconstructing packets in order to view data at various layers of the OSI layered protocol stack, including OSI layers two through seven. Processing continues to block 408, where a deep packet inspection of the buffered packet data is performed. Deep packet inspection includes examining the buffered data to determine whether it satisfies a flow criterion. Flow criteria may include for example, whether the buffered data includes an HTTP cookie, specific XML data, other application data, and the like. The flow criteria may include multiple sub-criteria, or a single sub-criterion. The flow criteria may thus seek data from a first layer and a second layer of the OSI layered protocol. For example, the flow criteria may seek buffered data that indicates the packet is a UDP packet and includes particular FTP application data, and the like. Thus, flow criteria may include virtually any condition, text, and the like, associated with a network packet, packets, and the like.
Process 400 continues to decision block 410, where a determination is made whether the buffered data satisfies the flow criteria. The buffered data may not satisfy the flow criteria for a variety of reasons. For example, the flow criteria may seek a specific data item, such as a specific HTTP cookie. HTTP cookies typically span more than one packet. As such, additional packets may need to be buffered to determine whether the flow criteria are satisfied. If the buffered data does not satisfy the flow criteria, processing branches to decision block 418. If however, it is determined that the buffered data does satisfies the flow criteria, processing flows to block 412.
At decision block 418, a determination is made whether to buffer more packet data from another packet in the flow of packets. The determination to buffer more packet data may be based in part on an implicit determination. For example, where it is known that the flow criteria spans several packets, such as in application data, and the like, process 400 may automatically decide to get a sufficient number of packets to be able to adequately determine whether the buffered data satisfies the flow criteria. One such example is where the flow criteria include examining at a deep packet inspection level for an HTTP cookie.
The determination to buffer more packet data may also be based on an instruction that specifies the amount of data to buffer. For example, an instruction may include a rule that requests buffering X number of bytes of data, and if the flow criteria is not satisfied after the X bytes, then give up. In another example, the flow criteria may include examining at a deep packet level for an XML tag called ‘foo.’ Decision block 418 then may decide to buffer X more bytes, and if at block 408 the XML tag “foo” is still not found, and then give up. In any event, if it is determined to buffer more packet data, processing branches back to block 402 where another packet is received; otherwise, processing branches to block 412.
At block 412, a tunnel is determined for the packet(s). A tunnel may be determined based on a variety of conditions, including a load-balancing mechanism, a pre-designated tunnel that is associated with the flow criteria, a pre-determined tunnel where the flow criteria is not satisfied, and the like.
Processing next flows to block 414, where the determined tunnel is associated with the received packet. Association may include modifying the packet, packet payload, and the like. For example, a MPLS label that identifies the determined tunnel may be carried or encapsulated in a layer-2 header of the packet. Where the determined tunnel includes an IPSec tunnel, the packet may be encapsulated within another packet specific to the determined IPSec tunnel. Where the determined tunnel includes a pre-designated SOCKS connection, the packet may be associated with that SOCKS connection. This may include, but is not restricted to, sending a SOCKS proxy request to open the connection.
Additionally, pre-determined header information may be extracted from the packet to generate a unique identifier. The unique identifier may be associated with the determined tunnel, and together the information may be maintained in a text file, database, memory, and the like, so that related packets in the same flow of packets may be routed to the same determined tunnel, with minimal additional overhead.
Once the packet is associated with the determined tunnel, the packet is forwarded towards the determined tunnel. Upon completion of block 416, processing returns to a calling process.
It will be understood that each block of the flowchart illustrations discussed above, and combinations of blocks in the flowchart illustrations above, can be implemented by computer program instructions. These program instructions may be provided to a processor to produce a machine, such that the instructions, which execute on the processor, create means for implementing the actions specified in the flowchart block or blocks. The computer program instructions may be executed by a processor to cause a series of operational steps to be performed by the processor to produce a computer-implemented process such that the instructions, which execute on the processor, provide steps for implementing the actions specified in the flowchart block or blocks.
Accordingly, blocks of the flowchart illustrations support combinations of means for performing the specified actions, combinations of steps for performing the specified actions and program instruction means for performing the specified actions. It will also be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by special purpose hardware-based systems, which perform the specified actions or steps, or combinations of special purpose hardware and computer instructions.
Illustrative Example of a Tunnel Determination on XML Data
FIG. 5 is an illustrative example of a tunnel determination on XML data, according to one embodiment of the invention. System 500 is intended to provide one example of tunnel determination, and as such, is not intended to limit the present invention.
As shown in the figure, system 500 includes client 102, STMD 204, WAN/LAN 120, silver tunnel 502, and gold tunnel 504. Components numbered similar to those in FIG. 2 operate substantially similar.
Silver tunnel 502 and gold tunnel 504 are intended to represent two tiers of service for an application such as XML, through WAN/LAN 120. In this example, the two tiers of service may employ two different paths, or service levels within a network, such as an MPLS network. Application data that client 102 desires to be routed through gold tunnel 504 include a <service-level> XML tag in an application packet flow with a value of “Gold.” Application data that client 102 desires to be routed through silver tunnel 502 include a <service-level> XML tag in the application packet flow with a value of “Silver.”
As STMD 204 receives a packet (block 402 of FIG. 4), it makes a determination whether a tunnel has already been determined for the packet flow with which this packet is associated (see decision block 404 of FIG. 4). If there is no persistence based on a prior determination, data from the packet is buffered and inspected at a deep packet level (see blocks 406-408 of FIG. 4). Deep packet inspections for XML tags may include inspections at the application layer (layer seven of the OSI layered protocol).
Because the flow criteria of an XML tag may span more than the current packet, data from several packets may be buffered and inspected, as described above in blocks 410 and 414 of FIG. 4. If it is determined that the buffered data satisfies the flow criteria, an MPLS tunnel label may be associated with the packet, such that the packet can be forwarded towards the appropriate tunnel (see blocks 414-416 of FIG. 4).
The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.

## Claims

1. An apparatus for directing a packet to a tunnel in a network, comprising:
(a) a transceiver arranged to receive and forward each packet in a flow of packets; and
(b) a processor, coupled to the transceiver, that is arranged to perform actions, including:
receiving the packets from a network device;
extracting data from the packets, wherein the extraction comprises a deep packet inspection at multiple layers of the seven layers in an Open Systems Interconnection (OSI) layered protocol across data extracted from a plurality of the packets to provide a rule syntax for at least one symbolic variable that is employed to generate a flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;
buffering a defined amount of data from the plurality of packets to determine whether the flow criteria is satisfied, wherein the defined amount is based on a number of packets required to identify the flow criteria, and wherein the number of packets is selectable based on a request to access the at least one symbolic variable;
when the flow criteria is unsatisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the flow criteria is satisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based in part on the extracted data, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data;
associating the packets with the selected tunnel, wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, and a load-balanced tunnel; and
forwarding the packets towards the selected tunnel.

2. The apparatus of claim 1, wherein the extracted data further comprises data associated with a pre-determined application.

3. The apparatus of claim 1, wherein the extracted data further comprises a Session Initiation Protocol (SIP) header.

4. The apparatus of claim 1, wherein the extracted data further comprises SSL protocol data.

5. The apparatus of claim 1, wherein the extracted data further comprises an HTTP header.

6. The apparatus of claim 1, wherein the extracted data further comprises an XML tag.

7. The apparatus of claim 1, wherein buffering the defined amount of data is further based on the flow criteria seeking specific data content from the packets.

8. The apparatus of claim 1, wherein selecting the tunnel further comprises determining the tunnel from a plurality of tunnels based in part on a load-balancing mechanism.

9. The apparatus of claim 1, wherein associating the packets with the selected tunnel further comprises labeling the packet with an MPLS label.

10. The apparatus of claim 1, wherein associating the packets with the selected tunnel further comprises encapsulating at least a portion of the packets.

11. The apparatus of claim 1, wherein associating the packets with the selected tunnel further comprises sending a SOCKetS (SOCKS) proxy request.

12. An apparatus for directing a packet to a tunnel in a network, comprising:
(a) a transceiver arranged to receive and forward each packet in a flow of packets; and
(b) a processor, coupled to the transceiver, that is arranged to perform actions, including:
receiving the packets from a network device;
extracting data from the packets, wherein the extraction comprises:
a deep packet inspection of multiple layers of the seven layers in an Open Systems Interconnection (OSI) layered protocol to provide a rule syntax for at least one symbolic variable that is employed to generate a flow criteria for selecting a tunnel from a plurality of different tunnels based on the extracted data from the packets, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;

buffering a defined amount of data from the packets to determine whether the flow criteria is satisfied, wherein the defined amount is based on a number of packets required to identify the flow criteria, and wherein the number of packets is selectable based on a request to access the at least one symbolic variable;
when the flow criteria is unsatisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the flow criteria is satisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based in part on the extracted data, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data;
associating the packet with the selected tunnel, wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, and a load-balanced tunnel; and
forwarding the packet towards the selected tunnel.

13. The apparatus of claim 12, wherein the extracted data further comprises data from a first layer of the OSI layered protocol and a second layer of the OSI layered protocol of the packets.

14. The apparatus of claim 12, wherein the multiple layers further comprises deep packet inspection of data from layer seven, an application layer, of the OSI layered protocol.

15. An apparatus for directing a packet to a tunnel in a network, comprising:
(a) a transceiver arranged to receive and forward each packet in a flow of packets; and
(b) a processor, coupled to the transceiver, that is arranged to perform actions, including:
receiving the packet from a network device;
extracting data from the packet, wherein the extraction comprises:
a deep packet inspection of multiple layers of the seven layers in an Open Systems Interconnection (OSI) layered protocol to provide a rule syntax for at least one symbolic variable that is employed to generate a flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;

buffering a defined amount of data from the packets to determine whether the flow criteria is satisfied, wherein the defined amount is based on a number of packets required to identify the flow criteria, and wherein the number of packets is selectable based on a request to access the at least one symbolic variable;
when the flow criteria is unsatisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the flow criteria is satisfied by the defined amount of buffered data, selecting the tunnel from the plurality of different tunnels based in part on the extracted data, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data;
associating the packet with the selected tunnel, wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, and a load-balanced tunnel; and
forwarding the packet towards the selected tunnel.

16. The apparatus of claim 15, wherein the extraction further comprises the deep packet inspection of data from at least layer seven and of data from at least one other layer of the OSI layered protocol.

17. The apparatus of claim 15, wherein the extracted data further comprises data associated with a pre-determined application.

18. A method for directing a packet towards a tunnel in a network, wherein a network device is arranged to perform actions, comprising:
receiving the packet from a network device;
buffering the received packet, wherein buffering the received packet further comprises buffering a number of packets based on the number of packets required to identify a flow criteria, wherein the number of packets is selectable based on a request to access at least one symbolic variable;
extracting data from the buffered packet, wherein the extraction comprises performing a deep packet inspection at multiple layers of the seven layers in an Open Systems Interconnection (OSI) layered protocol to provide a rule syntax for the at least one symbolic variable that is employed to generate a flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;
selecting the tunnel from the plurality of different tunnels based in part on the extracted data, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data, and wherein the selected tunnel further comprises at least one of an MPLS tunnel, or a secure tunnel;
modifying the packet for the selected tunnel; and
forwarding the modified packet towards the selected tunnel.

19. The method of claim 18, wherein the extracted data further comprises data associated with a pre-determined application.

20. The method of claim 18, wherein the extracted data further comprises an XML tag.

21. The method of claim 18, wherein the extracted data further comprises an HTTP header.

22. The method of claim 18, wherein the extracted data further comprises SSL protocol data.

23. The method of claim 18, wherein the extracted data further comprises a Session Initiation Protocol (SIP) header.

24. The method of claim 18, wherein selecting the tunnel further comprises determining the tunnel from a plurality of tunnels based in part on a load-balancing mechanism.

25. The method of claim 18, wherein selecting the tunnel further comprises determining the tunnel from a plurality of tunnels based in part on the flow criteria being unsatisfied.

26. The method of claim 18, wherein modifying the packet for the selected tunnel further comprises at least one of labeling the packet with a Multiprotocol Label Switching (MPLS) label, encapsulating at least a portion of the packet, and associating the packet with a SOCKetS (SOCKS) connection.

27. The method of claim 18, wherein the method is operable in at least one a load-balancer, a router, a firewall, a proxy, a bridge and a network address translation device.

28. The method of claim 18, further comprising:
determining when the data satisfies at least one flow criterion, and if the flow criteria is un-satisfied, buffering another packet in the plurality of packets, and extracting another data from the other packet.

29. The method of claim 18, wherein performing a deep packet inspection further comprising evaluating the extracted data against at least one flow criterion.

30. A method for directing a packet towards a tunnel in a network, wherein a network device is arranged to perform actions, comprising:
receiving packets from another network device;
determining a number of packets to buffer based on a defined number of packets required to determine whether a flow criteria is satisfied, wherein the defined number of packets includes more than one packet and is selectable based on a request to access at least one symbolic variable;
buffering the determined number of packets;
extracting data from within the determined number of buffered packets, wherein the extraction comprises performing a deep packet inspection of multiple layers of the seven layers in an Open Systems Interconnection (OSI) layered protocol for specific application layer data content to provide a rule syntax for the at least one symbolic variable that is employed to generate the flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;
when the flow criteria is unsatisfied in the determined number of buffered packets, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the flow criteria is satisfied in the determined number of buffered packets, selecting the tunnel from the plurality of different tunnels based in part on the extracted data, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data;
modifying the packets for the selected tunnel, wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, and a load-balanced tunnel; and
forwarding the modified packets towards the selected tunnel.

31. The method of claim 30, wherein the multiple layers further comprises layer seven, an application layer, of the OSI layered protocol.

32. The method of claim 30, wherein extracting data further comprises extracting data from at least two layers of the OSI layered protocol of the packet.

33. A system for directing a packet towards a tunnel in a network, comprising:
a router, configured to receive a packet and to route the packet; and
a tunnel manager, in communication with the router, that is configured to perform actions, comprising:
receiving packets from a network device;
determining a number of packets to buffer based on a defined number of packets required to determine whether a flow criteria is satisfied, wherein the defined number of packets includes more than one packet and is selectable based on a request to access at least one symbolic variable;
buffering the determined number of packets;
extracting data from within the determined number of buffered packets;
performing a deep packet inspection on the extracted data, wherein the deep packet inspection comprises examining data from multiple layers of the seven layers of the OSI layered protocol for specific application layer data content to provide a rule syntax for the at least one symbolic variable that is employed to generate the flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (TCP) content;
when the flow criteria is unsatisfied by the extracted data, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the extracted data satisfies the flow criteria, selecting the tunnel from the plurality of different tunnels based in part on the satisfied flow criteria, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data, and wherein the selected tunnel further comprises at least one of an MPLS tunnel, or a secure tunnel;
modifying the packets for the selected tunnel, and
forwarding the modified packets to the router, wherein the router is configured to route the packets towards the selected tunnel.

34. The system of claim 33, wherein the extracted data further comprises data associated with a pre-determined application.

35. The system of claim 33, wherein the extracted data further comprises an XML tag.

36. The system of claim 33, wherein the extracted data further comprises an HTTP header.

37. The system of claim 33, wherein the extracted data further comprises SSL protocol data.

38. The system of claim 33, wherein modifying the packet for the selected tunnel further comprises at least one of labeling the packet with an MPLS label, encapsulating at least a portion of the packet, and associating the packet with a SOCKetS (SOCKS) connection.

39. The system of claim 33, wherein the tunnel manager is further configured to operate as at least one of a load-balancer, a router, a firewall, a proxy, a bridge and a network address translation device.

40. A system for directing a packet towards a tunnel in a network, comprising:
a router, configured to receive a packet and to route the packet; and
a tunnel manager, in communication with the router, that is configured to perform actions, comprising:
receiving packets from a network device;
determining a number of packets to buffer based on a defined number of packets required to determine whether a flow criteria is satisfied, wherein the defined number of packets includes more than one packet and is selectable based on a request to access at least one symbolic variable;
buffering the determined number of packets;
extracting data from within the determined number of buffered packets;
performing a deep packet inspection on the extracted data, wherein the deep packet inspection comprises examining data from multiple layers of the seven layers of the OSI layered protocol for specific application layer data content to provide a rule syntax for the at least one symbolic variable that is employed to generate the flow criteria for selecting a tunnel from a plurality of different tunnels, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content;
when the flow criteria is unsatisfied by the extracted data, selecting the tunnel from the plurality of different tunnels based on the flow criteria being unsatisfied;
when the extracted data satisfies the flow criteria, selecting the tunnel from the plurality of different tunnels based in part on the satisfied flow criteria, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data;
modifying the packets for the selected tunnel, wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, or a load-balanced tunnel; and
forwarding the modified packets to the router, wherein the router is configured to route the packets towards the selected tunnel.

41. The system of claim 40, wherein the at least layer seven further comprises layer seven and at least one other layer above layer three of the OSI layered protocol.

42. The system of claim 40, wherein extracting data further comprises extracting data from at least two layers of the OSI layered protocol of the packet.

43. A network device for directing a packet towards a tunnel in a network, comprising:
a receiver configured to receive packets from another network device;
a processor that is arranged to perform actions, including:
buffering a defined number of packets required to determine whether a flow criteria is satisfied, wherein the defined number of packets includes more than one packet and is selectable based on a request to access the at least one symbolic variable;
extracting specific application layer data content from within the defined number of buffered packets using deep packet inspection at an application layer to provide a rule syntax for the at least one symbolic variable that is employed to generate the flow criteria for selecting a tunnel from a plurality of different tunnels;
selecting the tunnel from the plurality of different tunnels when the flow criteria is unsatisfied in the defined number of buffered packets, wherein the tunnel is selected based on the flow criteria being unsatisfied; and
selecting the tunnel from the plurality of different tunnels when the flow criteria is satisfied in the defined number of buffered packets, wherein the tunnel is selected based in part on the deep packet inspection at multiple layers of the seven layers in the OSI layered protocol, wherein the selected tunnel is pre-designated for a tunneling protocol that is associated with the extracted data, and wherein the selected tunnel further comprises at least one of an MPLS tunnel, an IPSec tunnel, a SOCKS tunnel, a secure tunnel, or a load-balanced tunnel, wherein the at least one symbolic variable includes Transmission Control Protocol (TCP) data content and one or more of a client address, server address, client port, server port, or Hypertext Transfer Protocol (HTTP) content; and

a logic device that is configured to associate the packets with the selected tunnel; and
a transmitter configured to forward the packets towards the selected tunnel.