IP Library Granted Patent US 7,957,280
Granted Patent B2
US 7,957,280 · App. 11/764,791 · Granted Jun 7, 2011

Classification and verification of static file transfer protocols

Assignee: BitTorrent, Inc.
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 7,957,280
App. No.
11/764,791
Granted
Jun 7, 2011
Kind
B2
Abstract

Classification and verification of static file transfer protocols is provided. A network node sitting in the path of packets classifies traffic according to its content, and then statistically verifies that the content actually matches the initial classification. Classification and verification are standard building blocks in networks systems that provide quality-of-service. However, unlike traditional quality-of-service building blocks, a system of the present invention takes a trust-but-verify approach, and thus can rely on longer-timescale statistical online or offline verification to reduce computational requirements. This improves scalability and reduces the cost and complexity that in part has prevented prior service differentiation systems from succeeding in the Internet. Internet Service Providers (ISPs) can combine the classification and verification building blocks with a networked directory service to allow further classification as to whether particular content is for pay.

Claims (105)

1. A method for routing network traffic, the method comprising:

receiving data for transmission over a connection;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data, wherein verifying the preliminary classification as appropriate for the received data comprises:

extracting a portion of the received data, wherein the extracted portion of received data comprises a plurality of bits included within the received data, each bit corresponding to a randomly determined location within the received data;

calculating a content identifier based on the extracted portion of received data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

2. A method for routing network traffic, the method comprising:

receiving data for transmission over a connection, the received data associated with a file transfer, the file transfer comprising a plurality of additional connections;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data by:

extracting additional data from at least one of the additional connections;

calculating a content identifier based on the extracted additional data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

3. The method of claim 2 , further comprising:

responsive to the plurality of additional connections comprising a maximum number of connections, forcibly closing any added connection associated with the file transfer.

4. The method of claim 2 , wherein extracting additional data from at least one of the additional connections comprises:

determining that an additional connection is in a busy state; and

identifying a message boundary for data transmitted over the additional connection.

5. The method of claim 4 , wherein determining that the additional connection is in a busy state comprises determining that a data payload associated with the additional connection exceeds a threshold.

6. The method of claim 4 , wherein identifying a message boundary for data transmitted over the additional connection comprises determining a probability that a bit pattern corresponds to a sequence of messages.

7. A method for routing network traffic, the method comprising:

receiving data for transmission over a connection;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data, the verification comprising at least one selected from the group consisting of:

determining if a message included in the received data has an allowable length;

determining if a field of the received data comprises an allowable value;

determining if the received data comprises an allowable number of messages; and

determining if the received data comprises an allowable amount of metadata.

8. A system for routing network traffic, comprising:

receiving means for receiving data for transmission over a connection;

a content classification engine, communicatively coupled to the receiving means, adapted to assign a preliminary classification to the received data;

a content directory, communicatively coupled to the content classification engine, adapted to map the received data to a preliminary service treatment associated with the preliminary classification;

routing means, communicatively coupled to the receiving means, adapted to route the received data over the connection with a priority associated with the preliminary service treatment; and

a content verification engine, communicatively coupled to the content classification engine, adapted to verify the preliminary classification as appropriate for the received data, wherein verifying the preliminary classification as appropriate for the received data comprises:

extracting a portion of the received data, wherein the extracted portion of received data comprises a plurality of bits included within the received data, each bit corresponding to a randomly determined location within the received data;

calculating a content identifier based on the extracted portion of received data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

9. A system for routing network traffic, comprising:

receiving means for receiving data for transmission over a connection, the received data associated with a file transfer, the file transfer comprising a plurality of additional connections;

a content classification engine, communicatively coupled to the receiving means, adapted to assign a preliminary classification to the received data;

a content directory, communicatively coupled to the content classification engine, adapted to map the received data to a preliminary service treatment associated with the preliminary classification;

routing means, communicatively coupled to the receiving means, adapted to route the received data over the connection with a priority associated with the preliminary service treatment; and

a content verification engine, communicatively coupled to the content classification engine, adapted to verify the preliminary classification as appropriate for the received data by:

extracting additional data from at least one of the additional connections;

calculating a content identifier based on the extracted additional data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

10. The system of claim 9 , wherein the content verification engine is further adapted to verify the preliminary classification as appropriate for the received data by:

responsive to the plurality of additional connections comprising a maximum number of connections, forcibly closing any added connection associated with the file transfer.

11. The system of claim 9 , wherein extracting additional data from at least one of the additional connections comprises:

determining that an additional connection is in a busy state; and

identifying a message boundary for data transmitted over the additional connection.

12. The system of claim 11 , wherein determining that the additional connection is in a busy state comprises determining that a data payload associated with the additional connection exceeds a threshold.

13. The system of claim 11 , wherein identifying a message boundary for data transmitted over the additional connection comprises determining a probability that a bit pattern corresponds to a sequence of messages.

14. A system for routing network traffic, comprising:

receiving means for receiving data for transmission over a connection;

a content classification engine, communicatively coupled to the receiving means, adapted to assign a preliminary classification to the received data;

a content directory, communicatively coupled to the content classification engine, adapted to map the received data to a preliminary service treatment associated with the preliminary classification;

routing means, communicatively coupled to the receiving means, adapted to route the received data over the connection with a priority associated with the preliminary service treatment; and

a content verification engine, communicatively coupled to the content classification engine, adapted to verify the preliminary classification as appropriate for the received data by performing at least one procedure selected from the group consisting of:

determining if a message included in the received data has an allowable length;

determining if a field of the received data comprises an allowable value;

determining if the received data comprises an allowable number of messages; and

determining if the received data comprises an allowable amount of metadata.

15. A non-transitory computer-readable storage medium storing computer-executable instructions that, when executed by a processor, cause the processor to perform a process for routing network traffic, the process comprising:

receiving data for transmission over a connection;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data, wherein verifying the preliminary classification as appropriate for the received data comprises:

extracting a portion of the received data, wherein the extracted portion of received data comprises a plurality of bits included within the received data, each bit corresponding to a randomly determined location within the received data;

calculating a content identifier based on the extracted portion of received data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

16. A non-transitory computer-readable storage medium storing computer-executable instructions that, when executed by a processor, cause the processor to perform a process for routing network traffic, the process comprising:

receiving data for transmission over a connection, the received data associated with a file transfer, the file transfer comprising a plurality of additional connections;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data by:

extracting additional data from at least one of the additional connections;

calculating a content identifier based on the extracted additional data; and

comparing the calculated content identifier to a stored content identifier, the stored content identifier associated with the preliminary classification.

17. The computer-readable storage medium of claim 16 , further comprising:

responsive to the plurality of additional connections comprising a maximum number of connections, forcibly closing any added connection associated with the file transfer.

18. The computer-readable storage medium of claim 16 , wherein extracting additional data from at least one of the additional connections comprises:

determining that an additional connection is in a busy state; and

identifying a message boundary for data transmitted over the additional connection.

19. The computer-readable storage medium of claim 18 , wherein determining that the additional connection is in a busy state comprises determining that a data payload associated with the additional connection exceeds a threshold.

20. The computer-readable storage medium of claim 18 , wherein identifying a message boundary for data transmitted over the additional connection comprises determining a probability that a bit pattern corresponds to a sequence of messages.

21. A non-transitory computer-readable storage medium storing computer-executable instructions that, when executed by a processor, cause the processor to perform a process for routing network traffic, the process comprising:

receiving data for transmission over a connection;

assigning a preliminary classification to the received data;

mapping the received data to a preliminary service treatment associated with the preliminary classification;

routing the received data over the connection with a priority associated with the preliminary service treatment; and

verifying the preliminary classification as appropriate for the received data, the verification comprising at least one selected from the group consisting of:

determining if a message included in the received data has an allowable length;

determining if a field of the received data comprises an allowable value;

determining if the received data comprises an allowable number of messages; and

determining if the received data comprises an allowable amount of metadata.

Assignments (2)
CHANGE OF NAME Recorded Jul 27, 2021
From: BITTORRENT, INC.
To: RAINBERRY, INC.
Reel/Frame 056995/0889 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2007
From: COHEN, BRAM; HARRISON, DAVID
To: BITTORRENT, INC.
Reel/Frame 019770/0518 →
Continuity (2)
Provisional Application 60805025 · Jun 16, 2006
Related Publication 20070297417A1 · Dec 27, 2007