IP Library Granted Patent US 10,097,466
Granted Patent B2
US 10,097,466 · App. 15/190,774 · Granted Oct 9, 2018

Data distribution method and splitter

Inventors: Jiyuan Tang (Shenzhen, CN); Bin Huang (Hangzhou, CN); Keping Chen (Shenzhen, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
H04L47/125H04L12/10H04L45/745H04L47/193H04L47/2483H04L47/6255H04L49/90H04L67/1027H04L67/2842H04L69/22H04L69/326G06F9/544
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 10,097,466
App. No.
15/190,774
Granted
Oct 9, 2018
Kind
B2
Abstract

A data distribution method and a splitter is provided. The data distribution method executed by the splitter includes: parsing a received data packet to determine a transport layer communications protocol to which the data packet belongs; acquiring from the data packet, identification information of a data stream to which the received data packet belongs; acquiring from a memory according to a correspondence between a transport layer communications protocol and an distribution table, an distribution table corresponding to the transport layer communications protocol to which the data packet belongs; determining according to a correspondence between identification information of a data stream and a thread in the acquired distribution table, a thread corresponding to the data stream to which the data packet belongs; and sending the data packet to a cache queue of the determined thread, so that the determined thread acquires the data packet from the cache queue.

Claims (52)

1. A data distribution method, applied to a data distribution system, wherein the data distribution system comprises: a splitter, a memory, and multiple threads used for processing data, and each thread corresponds to a cache queue; the memory stores a correspondence between a transport layer communications protocol and a distribution table, and stores the distribution table corresponding to each transport layer communications protocol, and each distribution table is provided with a correspondence between identification information of a data stream and a thread in the multiple threads; and the data distribution method comprises:

parsing, by the splitter, a received data packet to determine the transport layer communications protocol to which the data packet belongs;

acquiring, by the splitter from the data packet, identification information of a data stream to which the data packet corresponding to the determined transport layer communications protocol belongs, wherein the identification information of the data stream is used to differentiate the data stream to which the data packet belongs;

acquiring, by the splitter from the memory according to the correspondence between the transport layer communications protocol and the distribution table, the distribution table corresponding to the transport layer communications protocol to which the data packet belongs;

determining, by the splitter according to the correspondence between identification information of the data stream and a thread in the distribution table corresponding to the transport layer communications protocol to which the data packet belongs, a thread corresponding to the data stream to which the data packet belongs; and

sending, by the splitter, the data packet to a cache queue of the thread corresponding to the data stream to which the data packet belongs, so that the thread corresponding to the data stream to which the data packet belongs acquires the data packet from the cache queue.

2. The method according to claim 1 , wherein if the transport layer communications protocol to which the data packet belongs is a connectionless-oriented transport layer communications protocol, the identification information of the data stream is a 2-tuple of the data packet, and the 2-tuple comprises a destination IP address and port of the data packet; and

the distribution table corresponding to the connectionless-oriented transport layer communications protocol comprises:

a correspondence between a 2-tuple and a thread identifier, wherein each thread identifier corresponds to one thread.

3. The method according to claim 2 , wherein the determining, by the splitter according to the correspondence between identification information of a data stream and a thread in the distribution table corresponding to the transport layer communications protocol to which the data packet belongs, a thread corresponding to the data stream to which the data packet belongs comprises:

searching, by the splitter, the correspondence between a 2-tuple and a thread identifier in the distribution table corresponding to the connectionless-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to the 2-tuple of the data packet; and

determining, by the splitter, a thread corresponding to the thread identifier that corresponds to the 2-tuple of the data packet as the thread corresponding to the data stream to which the data packet belongs.

4. The method according to claim 2 , wherein the thread identifier is an address of a cache queue corresponding to a thread.

5. The method according to claim 1 , wherein if the transport layer communications protocol to which the data packet belongs is a connection-oriented transport layer communications protocol, the identification information of the data stream is a 4-tuple of the data packet, and the 4-tuple comprises a source IP address, a source port, a destination IP address, and a destination port of the data packet;

the distribution table corresponding to the connection-oriented transport layer communications protocol comprises a first distribution table; and

the first distribution table comprises a correspondence between a 4-tuple and a thread identifier, wherein each thread identifier corresponds to one thread.

6. The method according to claim 5 , wherein the determining, by the splitter according to the correspondence between identification information of a data stream and a thread in the distribution table corresponding to the transport layer communications protocol to which the data packet belongs, a thread corresponding to the data stream to which the data packet belongs comprises:

searching, by the splitter, the correspondence between a 4-tuple and a thread identifier in the first distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to the 4-tuple of the data packet; and

if the thread identifier corresponding to the 4-tuple of the data packet exists in the first distribution table, determining, by the splitter, a thread corresponding to the thread identifier that corresponds to the 4-tuple of the data packet as the thread corresponding to the data stream to which the data packet belongs.

7. The method according to claim 5 , wherein the distribution table corresponding to the connection-oriented transport layer communications protocol comprises a second distribution table; the second distribution table comprises a correspondence between a thread identifier and a destination IP address and port; wherein each thread identifier corresponds to one thread and a load of each thread;

wherein the determining, by the splitter according to the correspondence between identification information of a data stream and a thread in the distribution table corresponding to the transport layer communications protocol to which the data packet belongs, a thread corresponding to the data stream to which the data packet belongs comprises:

searching, by the splitter, the correspondence between a 4-tuple and a thread identifier in the first distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to the 4-tuple of the data packet;

if the thread identifier corresponding to the 4-tuple of the data packet does not exist in the first distribution table, searching, by the splitter, the correspondence between a thread identifier and a destination IP address and port in the second distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier or thread identifiers corresponding to the destination IP address and port of the data packet; and

determining, by the splitter, a thread with a smallest load in a thread or threads corresponding to the thread identifier or thread identifiers that corresponds/correspond to the destination IP address and port of the data packet as the thread corresponding to the data stream to which the data packet belongs.

8. The method according to claim 5 , wherein the thread identifier is an address of a cache queue corresponding to a thread.

9. The method according to claim 1 , wherein the method further comprises:

updating, by the splitter, the distribution table according to a state of a thread.

10. A data distribution system, wherein the data distribution system comprises: a splitter, a memory and multiple threads used for processing data, and each thread corresponds to a cache queue; the memory stores a correspondence between a transport layer communications protocol and a distribution table, and stores the distribution table corresponding to each transport layer communications protocol, and each distribution table is provided with a correspondence between identification information of a data stream and a thread in the multiple threads; wherein the splitter is configured to:

parse a received data packet to determine the transport layer communications protocol to which the data packet belongs;

acquire, from the data packet, identification information of a data stream to which the data packet corresponding to the determined transport layer communications protocol belongs, wherein the identification information of the data stream is used to differentiate the data stream to which the data packet belongs;

acquire, from the memory according to the correspondence between the transport layer communications protocol and the distribution table, the distribution table corresponding to the transport layer communications protocol to which the data packet belongs;

determine, according to the correspondence between identification information of the data stream and a thread in the distribution table corresponding to the transport layer communications protocol to which the data packet belongs, a thread corresponding to the data stream to which the data packet belongs; and

send the data packet to a cache queue of the thread corresponding to the data stream to which the data packet belongs, so that the thread corresponding to the data stream to which the data packet belongs acquires the data packet from the cache queue.

11. The data distribution system according to claim 10 , wherein if the transport layer communications protocol to which the data packet belongs is a connectionless-oriented transport layer communications protocol, the identification information of the data stream is a 2-tuple of the data packet, and the 2-tuple comprises a destination IP address and port of the data packet; and

the distribution table corresponding to the connectionless-oriented transport layer communications protocol comprises:

a correspondence between a 2-tuple and a thread identifier, wherein each thread identifier corresponds to one thread.

12. The data distribution system according to claim 11 , wherein the splitter is further configured to:

search the correspondence between a 2-tuple and a thread identifier in the distribution table corresponding to the connectionless-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to the 2-tuple of the data packet; and

determine a thread corresponding to the thread identifier that corresponds to the 2-tuple of the data packet as the thread corresponding to the data stream to which the data packet belongs.

13. The data distribution system according to claim 11 , wherein the thread identifier is an address of a cache queue corresponding to a thread.

14. The data distribution system according to claim 10 , wherein the distribution table corresponding to a connection-oriented transport layer communications protocol comprises a first distribution table; and

the first distribution table comprises a correspondence between a 4-tuple and a thread identifier, wherein each thread identifier corresponds to one thread.

15. The data distribution system according to claim 14 , wherein the splitter is further configured to:

search the correspondence between a 4-tuple and a thread identifier in the first distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to a 4-tuple of the data packet; and

if the thread identifier corresponding to the 4-tuple of the data packet exists in the first distribution table, determine a thread corresponding to the thread identifier that corresponds to the 4-tuple of the data packet as the thread corresponding to the data stream to which the data packet belongs.

16. The data distribution system according to claim 14 , wherein the distribution table corresponding to a connection-oriented transport layer communications protocol comprises a second distribution table; the second distribution table comprises a correspondence between a thread identifier and a destination IP address and port, wherein each thread identifier corresponds to one thread and a load of each thread;

wherein the splitter is further configured to:

search the correspondence between a 4-tuple and a thread identifier in the first distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier corresponding to a 4-tuple of the data packet;

if the thread identifier corresponding to the 4-tuple of the data packet does not exist in the first distribution table, search the correspondence between a thread identifier and a destination IP address and port in the second distribution table corresponding to the connection-oriented transport layer communications protocol to which the data packet belongs, for a thread identifier or thread identifiers corresponding to a destination IP address and port of the data packet; and

determine a thread with a smallest load in a thread or threads corresponding to the thread identifier or thread identifiers that corresponds/correspond to the destination IP address and port of the data packet as the thread corresponding to the data stream to which the data packet belongs.

17. The data distribution system according to claim 14 , wherein the thread identifier is an address of a cache queue corresponding to a thread.

18. The data distribution system according to claim 10 , wherein the splitter is further configured to update the distribution table according to a state of a thread.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2021
From: HUAWEI TECHNOLOGIES CO., LTD.
To: MASON LICENSING LLC
Reel/Frame 058044/0443 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2016
From: TANG, JIYUAN; HUANG, BIN; CHEN, KEPING
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 040101/0918 →
Priority Claims (1)
CN 2013 1 0721545 · Dec 24, 2013 · national
Continuity (2)
Continuation PCTCN2014094180 · Dec 18, 2014
Related Publication 20160308771A1 · Oct 20, 2016
Cited By (1)
US 12,493,576