IP Library Granted Patent US 9,432,463
Granted Patent B2
US 9,432,463 · App. 10/395,081 · Granted Aug 30, 2016

System and method for diverting established communication sessions on the basis of content

Inventors: Don Bowman (Waterloo, CA); David Dolson (Waterloo, CA)
Assignee: SANDVINE INCORPORATED ULC
H04L67/14H04L45/742H04L67/1002H04L67/327H04L69/329
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,432,463
App. No.
10/395,081
Granted
Aug 30, 2016
Kind
B2
Abstract

The present invention is related to a system and method for examining a communication stream between two nodes for a protocol of interest. If a protocol of interest is found, the communication stream is diverted to a divert host. If a protocol of interest is not found, the stream passes without diversion. By way of example, the invention is shown to work with TCP and UDP.

Claims (36)

1. A method for diverting an established communication session comprising:

examining said established communication session at a traffic switching element between a first node and a second node while allowing one or more packets to flow bidirectionally between said first node and said second node;

tracking a progression of the established communication session at a state session manager at the traffic switching element;

updating in the session state manager at the traffic switching element the state of said established communication session based on said one or more packets;

determining a protocol of said established communication session from a plurality of protocols based on said one or more packets;

determining, at the traffic switching element, if the protocol matches a pattern that indicates a protocol of interest;

if the protocol matches and a current state of the established communication session is equivalent to an inspect state, at the traffic switching element, diverting traffic from said first node or said second node to a divert host, by initiating and establishing a new communication session with said divert host by, at the traffic switching element, terminating the connection to said first or second node and splicing said established communication session with said new communication session by adapting subsequent packets, at the traffic switching element, for the first node, second node, or divert host to the current state of the established communication session, wherein if the established communication session uses TCP, the adapting subsequent packets comprises:

remapping sequence numbers and acknowledgment numbers, based upon the difference between the initial sequence numbers of the node the divert host is replacing and the divert host; and

rescaling window size based upon the difference between window scale values of the node the divert host is replacing and the divert host.

2. The method of claim 1 further comprising tagging packets delivered to said divert host said tagging indicating a communication protocol.

3. The method of claim 1 further comprising maintaining a plurality of session state records in said session state manager to permit a plurality of simultaneous communication sessions to be examined.

4. The method of claim 1 further comprising if the protocol of the established communication session does not match a pattern that indicates a protocol of interest, allowing the communication session to proceed without establishing a new communication session.

5. The method of claim 1 wherein the tracking of the progression of the established communication session comprises:

creating a new session state record if at least one of the packets comprises a SYN flag set.

6. The method of claim 1 wherein the current state of the session is maintained as the inspect state until the traffic switching element determines whether to allow or divert the established communication session.

7. The method of claim 1 further comprising:

updating the state of the new communication session in the state session manager to a divert state.

8. A non-transitory computer readable storage medium containing instructions, which, when executed on a computing device, cause the computing device to execute a method, for diverting an established communication session comprising:

examining said established communication session at a traffic switching element between a first node and a second node while allowing one or more packets to flow bidirectionally between said first node and said second node;

tracking a progression of the established communication session at a state session manager at the traffic switching element;

updating in the session state manager at the traffic switching element the state of said established communication session based on said one or more packets;

determining a protocol of said established communication session from a plurality of protocols based on said one or more packets;

determining, at the traffic switching element, if the protocol matches a pattern that indicates a protocol of interest;

if the protocol matches and a current state of the established communication session is equivalent to an inspect state, at the traffic switching element, diverting traffic from said first node or said second node to a divert host, by initiating and establishing a new communication session with said divert host by, at the traffic switching element, terminating the connection to said first or second node and splicing said established communication session with said new communication session by adapting subsequent packets, at the traffic switching element, for the first node, second node, or divert host to the current state of the established communication session, wherein if the established communication session uses TCP, the adapting subsequent packets comprises:

remappinq sequence numbers and acknowledgment numbers, based upon the difference between the initial sequence numbers of the node the divert host is replacing and the divert host; and

rescaling window size based upon the difference between window scale values of the node the divert host is replacing and the divert host.

9. A method for diverting an established communication session between a first node and a second node comprising:

examining the established communication session at a monitoring point between the first node and second node while allowing one or more packets to flow bidirectionally between the first node and the second node via the monitoring point;

tracking a progression of the established communication session at a state session manager at the monitoring point;

updating in the session state manager at the monitoring point the state of the established communication session based on the one or more packets;

determining a protocol of the established communication session at the monitoring point based on the one or more packets;

determining at the monitoring point if the protocol matches a pattern that indicates a protocol of interest; if the protocol matches and a current state of the established communication session is equivalent to an inspect state:

initiating and establishing, at the monitoring point, a new communication session between the monitoring point and a divert host; and

terminating, at the monitoring point, the connection between the monitoring point and one of the first or second node and splicing the established communication session with said new communication session by adapting packets in the spliced communication session based on the retained state of the established communication session and without sending all previously sent packets of the established communication session, wherein if the established communication session uses TCP, the adapting subsequent packets comprises:

remapping sequence numbers and acknowledgment numbers, based upon the difference between the initial sequence numbers of the node the divert host is replacing and the divert host; and

rescaling window size based upon the difference between window scale values of the node the divert host is replacing and the divert host.

Assignments (5)
MERGER Recorded Dec 7, 2018
From: SANDVINE CORPORATION; SANDVINE INCORPORATED ULC; SANDVINE LTD.; SANDVINE TECHNOLOGIES (CANADA) INC.
To: SANDVINE CORPORATION
Reel/Frame 047750/0077 →
MERGER Recorded Dec 7, 2018
From: PNI CANADA ACQUIRECO CORP.; SANDVINE CORPORATION
To: PNI CANADA ACQUIRECO CORP.
Reel/Frame 047750/0326 →
CHANGE OF NAME Recorded Dec 7, 2018
From: PNI CANADA ACQUIRECO CORP.
To: SANDVINE CORPORATION
Reel/Frame 048897/0558 →
CHANGE OF NAME Recorded Apr 14, 2008
From: SANDVINE INCORPORATED
To: SANDVINE INCORPORATED ULC
Reel/Frame 020798/0259 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2003
From: BOWMAN, DON; DOLSON, DAVID
To: SANDVINE INCORPORATED
Reel/Frame 013904/0640 →
Continuity (1)
Related Publication 20040193714A1 · Sep 30, 2004