Patent ID: 7340535

Claim:
A method comprising: receiving a packet by a flow manager associated with a network interface connection of an Internet Protocol Service Generator (IPSG), the IPSG including a plurality of virtual routing engines (VREs) coupled to the network interface connection via a service generator fabric, each VRE of the plurality of VREs providing one or more network layer and transport layer functions corresponding to the Open Systems Interconnection (OSI) model, including one or more of routing services, network address translation (NAT) and Multi-Protocol Label Switching (MPLS), and a plurality of virtual service engines (VSEs) coupled to the network interface connection and the plurality of VREs via the service generator fabric, each VSE of the plurality of VSEs tailored to provide one or more specific application layer, presentation layer, session layer and transport layer functions corresponding to the OSI model, including one or more of encryption, packet filtering and anti-virus scanning; the flow manager selecting a VRE of the plurality of VREs to which to direct the packet based on a steering table, which contains a mapping of Virtual Local Area Networks (VLANs) to the plurality of VREs; the flow manager directing the packet to the selected VRE by tagging the packet with an internal control header and transferring the packet across the service generator fabric; responsive to receiving the packet at the selected VRE, the selected VRE determining whether the packet is to be processed in hardware or in software by performing packet classification and a flow cache lookup; if the flow cache lookup indicates the packet is a first packet of a new flow and is therefore to be processed in software, then the VRE (i) causing a plurality of functions at a plurality of OSI model layers to be applied to the packet by internally routing the packet to one or more of the plurality of VSEs and one or more of the plurality of VREs and (ii) performing flow learning by tracking the plurality of functions applied and storing information regarding the plurality of functions in a transform control block (TCB) record corresponding to the new flow; if the flow cache lookup indicates the packet is associated with a previously learned flow and is therefore to be processed in hardware, then the VRE causing a plurality of functions identified in a previously created TCB record to be applied to the packet by internally routing the packet to one or more of the plurality of VSEs and one or more of the plurality of VREs; and a VRE of the one or more VREs routing the packet through the network interface.