IP Library Patent Application 11491233
Patent Application
App. No. 11/491,233

TCP normalization engine

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 None
App. No.
11/491,233
Abstract

The present invention relates to network security systems and, more particularly, to a method and apparatus for maintaining a TCP connection when the payload data of a TCP segment transmitted from source to destination is modified. The present invention allows the payload data of a TCP segment to be modified and, specifically, changed in length by an intermediate device during a TCP connection between any two hosts while adhering to the semantics of the TCP protocol so that the TCP connection may be maintained. More specifically, the invention comprises, in a TCP normalization engine communicating with a source and a destination, a method of maintaining a TCP connection between the source and the destination during modification of a payload associated with a TCP segment, the method comprising: receiving the TCP segment from the source at a process incoming module; determining if the TCP segment contains payload data; if the TCP segment contains payload data, invoking a process ack module and a process seq module, wherein the process seq module processes the payload data to determine if a payload correction is required; if a payload correction is required, updating a state table and modifying the payload data to reflect the payload data correction; modifying the TCP segment with at least the modified payload data; and forwarding the modified TCP segment to the destination. Advantageously, this approach allows payload data content to be changed flexibly in order to remove or neutralize protocol violations or attacks.

Claims (50)

1 . In a TCP normalization engine communicating with a source and a destination, a method of maintaining a TCP connection between the source and the destination during modification of a payload associated with a TCP segment, the method comprising:

(a) receiving the TCP segment from the source at a process incoming module;

(b) determining if the TCP segment contains payload data;

(c) if the TCP segment contains payload data, invoking a process ack module and a process seq module, wherein the process seq module processes the payload data to determine if a payload correction is required;

(d) if a payload correction is required, updating a state table and modifying the payload data to reflect the payload data correction;

(e) modifying the TCP segment with at least the modified payload data; and

(f) forwarding the modified TCP segment to the destination.

2 . The method of claim 1 further comprising:

(g) receiving in the process ack module at least an acknowledgement from the destination;

(h) determining if the acknowledgement confirms receipt of the modified payload data sent by the process seq module;

(i) if the acknowledgement confirms receipt of the modified payload data, updating the state table and modifying the acknowledgement with at least an acknowledgement number expected by the source; and

(j) forwarding the modified acknowledgement to the source.

3 . The method of claim 1 wherein the processing of the payload data in step (c) comprises sending the TCP segment to a payload filter communicating with the process seq module.

4 . The method of claim 3 wherein the modifying of the payload data in step (d) occurs in the payload filter.

5 . The method of claim 2 wherein the updating of the state table in step (d) comprises storing: (i) the acknowledgment number expected by the source; and (ii) a modified acknowledgment number expected by the TCP normalization engine.

6 . The method of claim 1 wherein the modifying of the TCP segment in step (e) further comprises correcting a sequence number and an acknowledgement number.

7 . The method of claim 2 wherein the determining in step (h) comprises comparing an acknowledgement number contained in the received acknowledgement, with the modified acknowledgement number stored in the state table.

8 . The method of claim 7 wherein the updating of the state table in step (i) comprises: (i) storing the received acknowledgement number in the state table; and (ii) extracting and mapping the acknowledgement number expected by the source from a first position to a second position in the state table.

9 . The method of claim 8 wherein the acknowledgement number is extracted from a queue of TCP segments which have not been acknowledged.

10 . The method of claim 9 wherein the acknowledgment number is mapped to an expected acknowledgement number field in a server-to-client portion of the state table.

11 . The method of claim 1 wherein, prior to forwarding the modified payload data to the destination: (i) determining if the destination is unable to receive the modified payload data; and (ii) if the destination is unable to receive the modified payload data, placing the modified payload data in a queue of TCP segments which have not been sent.

12 . The method of claim 3 wherein the determining in step (b) further comprises, prior to sending the TCP segment to the payload filter: (i) determining if the received TCP segment is a retransmission from the source; and (ii) if the received TCP segment is a retransmission, then retransmitting the TCP segment from the process seq module to the destination.

13 . The method of claim 1 further comprising, if the modified payload data exceeds a predefined threshold, sending the modified payload data in multiple ones of the TCP segment.

14 . A computer readable medium having stored thereon, computer executable instructions which, when executed by a processor in a server cause the processor to:

(a) receive the TCP segment from the source at a process incoming module;

(b) determine if the TCP segment contains payload data;

(c) if the TCP segment contains payload data, invoke a process ack module and a process seq module, wherein the process seq module processes the payload data to determine if a payload correction is required;

(d) if a payload correction is required, update a state table and modify the payload data to reflect the payload data correction;

(e) modify the TCP segment with at least the modified payload data; and

(f) forward the modified TCP segment to the destination;

(g) receive in the process ack module at least an acknowledgement from the destination;

(h) determine if the acknowledgement confirms receipt of the modified payload data sent by the process seq module;

(i) if the acknowledgement confirms receipt of the modified payload data, update the state table and modifying the acknowledgement with at least an acknowledgement number expected by the source; and

(j) forward the modified acknowledgement to the source.

15 . A modulated carrier wave generated by a TCP normalization engine communicating with a destination, wherein the modulated carrier wave embodies a data signal representing a modified payload data, and wherein the modified payload data is generated by a process seq module integral to the TCP normalization engine, and wherein a TCP segment is received by a process incoming module and analyzed to determine if the TCP segment contains payload data and, if the TCP segment does contain payload data, a process ack module and a process seq module are invoked, and wherein the process seq module processes the payload data to determine if a payload correction is required and, if a payload correction is required, updates a state table and modifies the original payload data to produce a modified payload data, and wherein the TCP segment is modified with at least the modified payload data forwarded to the destination in the modulated carrier wave.

16 . A TCP normalization engine for maintaining a TCP connection between a source and a destination when payload data associated with a TCP segment transmitted from the source to the destination is modified, the TCP normalization engine comprising:

(a) a state table for storing at least: (i) an acknowledgement number expected by the source; and (ii) a modified acknowledgment number expected by the TCP normalization engine;

(b) a process incoming module for receiving the TCP segment from the source and initializing the state table during establishment of the TCP connection between the source and the destination;

(c) a process ack module for processing an acknowledgment number received from the destination and updating the state table accordingly; and

(d) a process seq module for processing payload data contained in the received TCP segment to determine if a correction is required, modifying the payload data and associated TCP segment to reflect the correction, updating the state table and forwarding the modified TCP segment to the destination,

wherein said process incoming, process ack and process seq modules interact with said state table and the destination and source to maintain the TCP connection.

17 . The TCP normalization engine of claim 16 further including a payload filter communicating with the process seq module and wherein the processing and modifying of the payload data is performed by the payload filter.

18 . The TCP normalization engine of claim 16 wherein the state table comprises a server-to-client portion and a client-to-server portion.

19 . The TCP normalization engine of claim 16 wherein the state table further comprises a queue of TCP segments which have not been filtered.

20 . The TCP normalization engine of claim 16 wherein the state table further comprises a queue of TCP segments which have not been acknowledged.

21 . The TCP normalization engine of claim 16 wherein the state table further comprises a queue of TCP segments which have not been sent.

22 . The TCP normalization engine of claim 18 wherein each of said server-to-client and a client-to-server portions contain entries taken from the group comprising State, MaxAck, Max Win, MaxSeq, MaxAcK F , MaxSeq F , NFQ, NACKQ and NSQ.

23 . The TCP normalization engine of claim 19 wherein the queue contains entries taken from the group comprising PackSeq, PackSeqData and PackData.

24 . The TCP normalization engine of claim 20 wherein the queue contains entries taken from the group comprising PackSeq, PackSeqData, AckState, PiggybackSeq, ModifiedFlag, PackSeq F , PackSeqData F and PackData F .

25 . The TCP normalization engine of claim 21 wherein the queue contains entries taken from the group comprising PackSeq, PackSeqData, ModifiedFlag, PackSeq F , PackSeqData F , PackData F .

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2009
From: THIRD BRIGADE INC.
To: TREND MICRO KABUSHIKI KAISHA
Reel/Frame 023418/0552 →
CONFIRMATION OF COMPANY NAME AND ADDRESS Recorded Oct 25, 2009
From: TREND MICRO KABUSHIKI KAISHA
To: TREND MICRO INCORPORATED
Reel/Frame 023418/0501 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE CITY IN THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED ON REEL 022729 FRAME 0816. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF THE NAME OF THE CITY FROM "KANATA, ONTARIO, CANADA K2K2M5" TO "OTTAWA, ONTARIO, CANADA K2K2M5". Recorded Jul 8, 2009
From: THIRD BRIGADE, INC.
To: THIRD BRIGADE INC.
Reel/Frame 022927/0809 →
CHANGE OF NAME Recorded Jul 7, 2009
From: THIRD BRIGADE, INC.
To: THIRD BRIGADE INC.
Reel/Frame 022923/0061 →
CHANGE OF NAME Recorded May 25, 2009
From: THIRD BRIGADE, INC.
To: THIRD BRIGADE INC.
Reel/Frame 022729/0816 →
SECURITY AGREEMENT Recorded Mar 11, 2009
From: THIRD BRIGADE INC.
To: COMERICA BANK
Reel/Frame 022379/0598 →
CHANGE OF ADDRESS Recorded May 11, 2007
From: THIRD BRIGADE, INC.
To: THIRD BRIGADE, INC.
Reel/Frame 019284/0416 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2006
From: STEFAN, RARES; ILIE, VALERIU; MCGEE, WILLIAM
To: THIRD BRIGADE, INC.
Reel/Frame 018352/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2006
From: STEFAN, RARES; ILIE, VALERIU; MCGEE, WILLIAM
To: THIRD BRIGADE, INC.
Reel/Frame 018124/0273 →