Patent ID: 9686192
Date: 2017-06-20
CPC Classifications: H04L

Claim:
1. A computer-implemented method of processing a first packet using an ordered sequence of services, the first packet having a source, a destination, and a type, the method comprising: applying policy rules based on one or more attributes of the first packet, the one or more attributes comprising: a packet type, a source address, and a destination address; based on the applied policy rules, determining the ordered sequence of services for processing the first packet prior to sending the first packet to a destination identified in the first packet, the ordered sequence including a first service and a second service; altering a destination address of the first packet such that the first packet is sent to the first service and not the destination; storing, in a memory separate from the first packet, first state information for the first packet associated with the first service, the first state information comprising an indication as to whether the first packet is outbound or inbound, a type of the first packet, and the ordered sequence of services; preparing and forwarding the first packet to the first service; receiving a first processed packet from the first service in response to the forwarding of the first packet to the first service; identifying the first processed packet by comparing the first processed packet with the stored first state information associated with the first service; upon identifying the first processed packet, storing second state information for the first processed packet associated with the second service, the second state information comprising an indication as to whether the first processed packet is outbound or inbound, a type of the first processed packet, and the ordered sequence of services; preparing and forwarding the first processed packet to the second service; receiving a second processed packet from the second service in response to the forwarding of the first processed packet to the second service; identifying the second processed packet by comparing the second processed packet with the stored second state information associated with the second service; and preparing and forwarding to the second processed packet to the destination.