CN109792621B - Method and system for evaluating network performance of aggregated connections - Google Patents

Method and system for evaluating network performance of aggregated connections Download PDF

Info

Publication number
CN109792621B
CN109792621B CN201780062035.XA CN201780062035A CN109792621B CN 109792621 B CN109792621 B CN 109792621B CN 201780062035 A CN201780062035 A CN 201780062035A CN 109792621 B CN109792621 B CN 109792621B
Authority
CN
China
Prior art keywords
connection
data
connections
packets
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780062035.XA
Other languages
Chinese (zh)
Other versions
CN109792621A (en
Inventor
宋浩伟
梁允俊
陈永康
吴锦超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pismo Labs Technology Ltd
Original Assignee
Pismo Labs Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/462,951 external-priority patent/US9876723B2/en
Application filed by Pismo Labs Technology Ltd filed Critical Pismo Labs Technology Ltd
Publication of CN109792621A publication Critical patent/CN109792621A/en
Application granted granted Critical
Publication of CN109792621B publication Critical patent/CN109792621B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/18End to end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • H04W24/08Testing, supervising or monitoring using real traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Methods and systems for transmitting data packets of a data session over a selected connection at a network node. The network node determines a plurality of possible connections. Selecting a connection as the selected connection based on connection selection criteria when the data packet belongs to a new data session. Other data packets belonging to the data session will be transmitted over the selected connection. The connection selection criterion comprises selecting the connection with the lowest latency among all connections. Evaluating latency using an evaluation packet based on a first data packet of the new data session.

Description

Method and system for evaluating network performance of aggregated connections
Technical Field
The present invention generally relates to the field of computer networks. More particularly, the present invention relates to a method and system for periodically determining the performance of a plurality of connections by transmitting evaluation packets over the plurality of connections. Selecting one or more connections for transmitting data packets based, at least in part, on the performance. Transmitting the data packet over at least one of the one or more connections.
Background
A multiple Wide Area Network (WAN) communication device is capable of transmitting data packets using one or more of its WAN interfaces. The communications device also supports aggregating bandwidth for multiple WAN interfaces. The communication device also supports end-to-end connections such as Virtual Private Network (VPN) connections and session-based site-to-site (VPN) connections and tunneling. In some embodiments, each TCP/IP session is routed to only one WAN. In this configuration, a single TCP file transfer session may only utilize the bandwidth of one WAN connection on each end. For example, in a session-based site-to-site Virtual Private Network (VPN) connection, VPN traffic is routed to multiple WAN connections between two sites (e.g., sites a and B).
In one embodiment, M × N tunnels are initially formed between WAN connections, where M and N are the number of WAN network connections for site a and site B, respectively. The application TCP/IP session is then routed via a different tunnel. It should be noted, however, that while a session-based site-to-site VPN can utilize different tunnels for different sessions, a single download session in this type of connection can only utilize one tunnel.
When a communication device transmits a data packet, the communication device needs to select the most appropriate WAN network interface, access connection, logical connection, or end-to-end connection to transmit the data packet. However, it takes time to identify which of the WAN network interface, access connection, logical connection, or end-to-end connection is most appropriate. The most suitable WAN network interface, access connection, logical connection, or end-to-end connection to transmit packets should be one that can transmit packets fastest or according to a set of performance criteria. Furthermore, when a communication device establishes a plurality of end-to-end connections belonging to an aggregated end-to-end connection, it is important to select the end-to-end connection with the best performance to transmit data packets, so that the overall performance of the aggregated end-to-end connection is satisfactory and not adversely affected by transmitting data packets over the established end-to-end connection with poorer performance.
However, it is well known that the performance of an end-to-end connection may change from time to time. Therefore, the performance of the end-to-end connection needs to be periodically re-determined in order to check which end-to-end connection(s) has the best performance at a given time. It is also important to re-determine the performance of the established end-to-end connection using packets containing the same information so that a fair comparison can be made between the established end-to-end connections based on their performance.
Disclosure of Invention
A method performed by a first communication device for determining performance of a plurality of connections and selecting at least one first connection from the plurality of connections based substantially on performance is disclosed. The data packet is then transmitted over the at least one first connection. The plurality of links may be aggregated to form an aggregated link. Determining performance is performed by transmitting an evaluation packet over the plurality of connections. The evaluation packet is based on data packets received by the first communication device but not yet transmitted over the aggregated connection. The data packet may be destined for a host or node reachable through the aggregated connection. Alternatively, the evaluation packet may be based on predefined information when there are no data packets to be transmitted over the aggregated connection. Determining performance may be performed periodically. Load balancing may be used to transmit packets when there is more than one first connection.
According to one embodiment of the invention, each of the at least one first connection is divided into at least two groups. At least one of said at least two groups is preferably used for transmitting data packets of a first type, and another at least one of said at least two groups is preferably used for transmitting data packets of a second type.
According to one embodiment of the invention, the evaluation packets have the same or substantially the same size. The evaluation packages may also have the same or substantially the same information.
According to one embodiment of the invention, the performance is substantially based on latency. The at least one first connection is further based on a corresponding latency requirement of the data packet. The corresponding delay requirement of the data packet may be determined from the content of the data packet. In one variation, a connection is not selected as one of the at least one first connection when the latency of the connection is determined to be greater than about 1000 milliseconds. When the latency of the second connection exceeds about 800 milliseconds, the second connection is not used for data packets containing near real-time video data or near real-time voice communications. When the latency of the third connection exceeds approximately 500 milliseconds, the third connection is not used for near real-time voice communications. The second connection and the third connection are comprised in at least one first connection.
The invention further discloses a method for transmitting data packets over an aggregated connection at a first communication device, which method first determines a latency of a plurality of connections comprised in the aggregated connection. A difference in latency of the plurality of connections is determined, and it is determined whether the difference in latency is above a latency deviation threshold. If the difference in the delays of the at least one first connection with the highest delay is above a delay deviation threshold, the at least one first connection is not used for transmitting data packets. Instead, at least one second connection with a relatively low latency is used for transmitting the data packets. The plurality of connections consists of at least one first connection and/or at least one second connection. In one variant, the at least one first connection is established using a third generation mobile communication technology (3G) and the at least one second connection is established using a fourth generation mobile communication technology (4G) or wired ethernet. In one variant, when the aggregated connection comprises only at least one first connection established using 3G, the data packets are transmitted using the at least one first connection.
Drawings
FIG. 1A illustrates a network environment in accordance with various embodiments of the invention.
FIG. 1B illustrates a network environment according to one embodiment of the invention.
FIG. 1C illustrates a network environment according to one embodiment of the invention.
Fig. 2 is a schematic block diagram of a communication device according to one embodiment of the present invention.
FIG. 3A shows a timing diagram in accordance with one embodiment of the present invention.
FIG. 3B shows a timing diagram in accordance with one embodiment of the present invention.
Fig. 4 shows a timing diagram in which only one connection is used to transmit a data packet according to an embodiment of the invention.
Fig. 5 shows a timing diagram in which more than one connection is used to transmit a data packet according to one embodiment of the invention.
Fig. 6 shows a timing diagram representing the transmission of an evaluation packet and a data packet according to one embodiment of the invention.
Fig. 7 shows a timing diagram representing the transmission of an evaluation packet and a data packet according to one embodiment of the invention.
FIG. 8A is a flow diagram illustrating a process according to one embodiment of the invention.
FIG. 8B is a flow diagram illustrating a process according to one embodiment of the invention.
FIG. 9 is a flow diagram illustrating a process according to one embodiment of the invention.
FIG. 10 is a flow diagram illustrating a process according to one embodiment of the invention.
FIG. 11 shows a Graphical User Interface (GUI) for a user or administrator of a communication device according to one embodiment of the invention.
FIG. 12 shows a GUI for a user to select parameters according to one embodiment of the invention.
Fig. 13 shows a timing diagram representing the transmission of a data packet according to one embodiment of the invention.
FIG. 14 is a flow diagram illustrating a process according to one embodiment of the invention.
Detailed Description
FIG. 1A illustrates a system 101 that demonstrates a network environment according to one embodiment of the invention. System 101 comprises a plurality of stations 102 and 104 that each include at least one communication device 106 and 108. The communication devices 106 and 108 are connected via a network 110. Network 110 may include a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a wireless network, the Public Switched Telephone Network (PSTN), the Internet, an intranet, an extranet, and so forth.
Station 102 and communication device 106 may include M connections 112 and station 104 and communication device 108 may include N connections 114. Connections 112 and 114 are access connections for communicating information within network 110 between stations 102 and 104. In the embodiment shown, M equals 3 and N equals 2; however, these values may vary depending on the desired device and configuration. Connections 112 and 114 may have similar or different bandwidth capabilities. Further, connections 112 and 114 may include different types of WAN connections, such as WiFi, cable, DSL, TI, 3G, 4G, LTE, satellite connections, and so forth. It should also be noted that station 102 and station 104 may be considered both transmitters or receivers, and that the discussion of the functionality of either station may be implemented on the other station. In other words, the system 100 may be implemented as a symmetric network.
FIG. 1B illustrates a network environment according to one embodiment of the invention. Logical connections 103A, 103B, and 103C connect communication device 106 to communication device 108. In one variation, logical connections 103A, 103B, and 103C are end-to-end connections that are bundled to form an aggregated end-to-end connection. In one variation, logical connections 103A, 103B, and 103C are grouped into different connection groups, and data is transmitted over the connections based at least in part on the groups into which the connections are grouped.
According to one embodiment, the communication devices 106 and 108 have multiple network interfaces. The communication device 106 establishes logical connections 103A, 103B, and 103C with one or more network interfaces of the communication device 108 via one or more of its multiple network interfaces.
The communication devices 106 and 108 may act as gateways, routers, switches, access points, hubs, bridges, and the like.
Fig. 1C illustrates a system 100 adapted according to an embodiment configured to optimize throughput of a bundled plurality of variable bandwidth connections by adjusting a tunnel bandwidth weighting pattern during a data session. System 100 is similar to system 101 except for M × N virtual tunnels 116. When a bonded connection is established between sites 102 and 104, for example, by enforcing a bonded site-to-site VPN connection, mxn virtual tunnels 116 may be created. Virtual tunnel 116 corresponds to a unique arrangement of the network connections of station 102 and the network connections of station 104. An aggregated end-to-end connection is formed between communication devices 106 and 108. Connections 112 and 114 are implemented as logical connections.
Fig. 2 is a schematic block diagram of a communication device (e.g., communication device 106) according to one embodiment of the present invention. The communication device 106 includes a processing unit 201, a main memory 202, a system bus 203, a secondary storage device 204, and a plurality of network interfaces 205. The processing unit 201 and the main memory 202 are directly connected to each other. The system bus 203 directly or indirectly connects the processing unit 201 to secondary storage 204 and to a plurality of network interfaces 205. The use of the system bus 203 allows the communication device 106 to have increased modularity. The system bus 203 couples the processing unit 201 to a secondary storage 204 and a plurality of network interfaces 205. The system bus 203 may be any of several types of bus structures including a memory bus, a peripheral bus, and a local bus using any of a variety of bus architectures. The secondary storage 204 stores program instructions for execution by the processing unit 201. The secondary storage 204 further stores conditions, wherein the grouping of the connections into different groups depends on whether the connection satisfies the conditions. The secondary storage 204 also stores predefined time periods for transmitting data packets for determining the performance of the connection and data packets belonging to the data session, respectively.
One or more network interfaces 205 are connected to corresponding access connections. The communication device 106 uses one or more access connections to connect to one or more public and/or private networks as shown in fig. 1A. In one variation, one or more connections may be established using the access connection to connect the communication device 106 with another network node (e.g., communication device 108) or a network host, as shown in fig. 1B and 1C.
Fig. 3A illustrates a timing diagram representing transmission of an evaluation packet and a data packet over a connection at a communication device (e.g., communication device 106) according to one embodiment. For better understanding, fig. 3A is seen in conjunction with fig. 2. Timing diagrams 301, 302 and 303 represent transmissions over the first, second and third connections, respectively. The horizontal axis represents time. The communication device 106 is connected to the first, second and third connections through at least one of a plurality of network interfaces 205. Examples of times are represented as t-0, t-1, t-6, t-7, t-2, t-3, t-4 and t-5.
For purposes of illustration, evaluation packets 311a, 311b, and 311c are transmitted over the first, second, and third connections, respectively, at t-0 or substantially the same time to determine the performance of the first, second, and third connections. At about t-1, the communication device 106 has transmitted the evaluation packets 311a and 311b over the first connection and the second connection, respectively, and has received an acknowledgement from the communication device 108. However, the communication device 106 has not completed transmission of the evaluation packet 311c. The difference in the amount of time required to transmit the evaluation packet may be due to a variety of reasons, including the network performance of the connection. In addition, at about t-1, the processing unit 201 has determined that the first connection has the best network performance after it has completely transmitted the evaluation packet 311 a. As is well known to those skilled in the art, there are a variety of ways to determine network performance based on evaluation packets. For clarity, the present invention is not limited to having the processing unit 201 make the network performance decision at about the same time after the evaluation packet 311a is completely transmitted. Performance may be determined based on evaluating the transmission of packets and the receipt of acknowledgements. The performance may be further determined based on data packets received from the communication device 108.
Once the processing unit 201 has determined that the first connection has the best performance, the processing unit 201 selects the first connection to transmit the data packet 312. Data packet 312 contains data denoted as data-2. Data-2 may belong to one data stream, multiple data streams, or data not belonging to a stream. The length of data-2 may vary. Data packets 312 may be of different sizes and may include one or more data packets. For example, data packet 312 may be an Internet Protocol (IP) packet.
In another example, at about t-2, the processing unit 201 restarts the process to determine the performance of the first, second, and third connections again. At about t-3, the processing unit 201 has determined that the second connection has the best performance and therefore selects the second connection for transmitting the data packet 314.
In one variant, the evaluation packets 311, 313 and 315 are transmitted in order to select the network interface for transmitting the data packets. For example, the plurality of network interfaces 206 includes first, second, and third network interfaces. The evaluation packet is transmitted through the first, second and third network interfaces for determining which network interface is associated with the connection having the best performance. For purposes of illustration, when it is determined that the first network interface is associated with the connection having the best performance, the data packet is transmitted over the connection associated with the first network interface. The connection may be an access connection or a logical connection.
According to one embodiment of the invention, the evaluations transmitted at about the same time include the same or substantially the same information. For example, the evaluation packets 311a, 311b, and 311c contain the same or substantially the same information data-1. Similarly, the evaluation packets 313a, 313b, and 313c contain the same or substantially the same information data-3. Similarly, the evaluation packets 315a, 315b, and 315c contain the same or substantially the same informational data-5. All evaluation packets 311, 313 and 315 are transmitted in order to determine the performance of the connection.
When the same or substantially the same information is used, the processing unit 201 does not need to generate different information for the evaluation package. This may reduce the amount of computing resources required. In addition, the performance of the connections can be compared more accurately, since the length and content of the evaluation packets are the same or substantially the same.
In one variant, the same or substantially the same information belongs to the same data session. For purposes of illustration, data-1 contained in evaluation packets 311a, 311b, and 311c, data-2 contained in data packet 312, data-3 contained in evaluation packets 313a, 313b, and 313c, data-4 contained in data packet 314, and data-5 contained in evaluation packets 315a, 315b, and 315c belong to the same data session. Thus, the evaluation packet is a data packet belonging to a data session. The benefit of using the evaluation packets belonging to the data session to determine performance is that the data stream transmission is not significantly disrupted, interrupted or suspended when the evaluation packets are transmitted. This is important because performance can be evaluated or determined periodically and frequently, not just at the beginning of a data session. When there is a current data session and there is a data packet to be transmitted, it is preferable to use the data packet as an evaluation packet, i.e., to evaluate the performance of the connection based on the transmission of the data packet.
In another example, the video stream is transmitted to the communication device 108 through the communication device 106 using TCP. Data-1 of the evaluation packets 311a, 311b, and 311c encapsulates the data of the first frame of the video. Data-2 of data packet 312 encapsulates data of the second frame of video. Data-3 in the evaluation packets 313a, 313b, and 313c is the third frame of the video. Data-4 of packet 314 encapsulates the data of the fourth frame of video. Data-5 of evaluation packets 315a, 315b, and 315c encapsulates the data of the fifth frame of video. When the performance is determined by evaluating the packets, the data of the video stream is still transmitted. In addition, video is still transmitted from communication device 106 to communication device 108 without interruption, even when a different connection is selected from t-0 to t-5, i.e., when the first connection is selected at about t-1 and the second connection is selected at about t-3.
Another benefit of using the evaluation package belonging to the data session is to use real-time data to determine performance. This makes the performance determination more accurate and appropriate.
In one variant, the evaluation packages 311, 313 and 315 contain predefined information. Although the use of evaluation packets containing predefined information to determine performance during a data session may interrupt a data stream session, the determined performance may be used to compare with the determined historical performance. The evaluation package containing the predefined data is more suitable for determining the performance when there is no current data session or no data to be transmitted for the current data session. For example, in FIG. 3A, the evaluation packages 311, 313, and 315 contain predefined information. The predefined information in the evaluation packages 311a, 311b and 311c should be the same in order to make an accurate performance comparison of the first, second and third connections. Similarly, the predefined information in the evaluation packets 313a, 313b, and 313c should be the same, and the predefined information in the evaluation packets 315a, 315b, and 315c should also be the same. Thus, during time periods t-0 to t-1, t-2 to t-3, and t-4 to t-5, the data session is interrupted, or suspended for the transmission of the assessment packets. In one variant, the predefined information in the evaluation packages 311, 313 and 315 is the same. For illustrative purposes, when the assessment packets contain predefined information, the interval for transmitting the assessment packets may be in the range of 5 seconds to 15 minutes. Preferably, the time period t-0 to t-2 may be in the range of 5 seconds to 15 minutes.
According to one embodiment of the invention, the data packet may be considered an evaluation packet, so that the data packet may also be used to determine the performance of the connection. For example, at about t-3, processing unit 201 determines the performance of the first connection based on the successful transmission of data-2 contained in data packet 312 and data-3 contained in evaluation packet 313 a. The processing unit 201 uses successful transmission based on data-3 contained only in the evaluation packets 313b and 313c, respectively, to determine the performance of the second connection and the third connection, since no data packets are transmitted over the second and third connections.
According to one embodiment of the present invention, the size of each evaluation package may be configured by a user or an administrator. In some scenarios, some operators may give smaller packets a higher priority so that smaller packets may be transmitted earlier than larger packets. Smaller packets may be transmitted earlier, which may be advantageous to configure the size of the evaluation packet to be smaller. Thus, the estimated delay can be closer to the theoretical delay of the connection. If only the size of the evaluation packet is configured to be small, rather than the entire data packet, the evaluated delay may be much lower than the actual delay that would be experienced in transmitting the data packet. Thus, the estimated latency may not accurately represent the performance of the connection. To avoid this, the sizes of the entire data packets and the evaluation packet may be configured to be small.
Alternatively, the size of the evaluation packet and the data packet may be configured to be large. The overhead can be reduced when the size of each packet is large, because there is a smaller number of packets for a given amount of data. Furthermore, the computational resources required for processing packets may be reduced, as the number of packets may be smaller.
According to one embodiment of the invention, the evaluation packets have the same size or substantially the same size. For example, the evaluation packets 311a, 311B, and 311c are all composed of five packets, as shown in fig. 3B. The evaluation package 311a is composed of packages 3001 to 3005; the evaluation packet 311b is composed of packets 3011 to 3015; and the evaluation packet 311c is composed of packets 3021 to 3025. The packets 3001, 3011, and 3021 all have the same size. Similarly, the packets 3002, 3012, and 3022 all have the same size; the packets 3003, 3013, and 3023 all have the same size; the packets 3004, 3014, and 3024 all have the same size; and the packets 3005, 3015, and 3025 all have the same size. Therefore, the evaluation packets 311a, 311b, and 311c all have the same size. Using the same size or substantially the same size of evaluation packets for evaluation allows processing unit 201 to more accurately compare the performance of the connections. The contents of the packets 3001 to 3025 may be the same, different or randomly generated. The contents of the packets 3001 to 3025 may also belong to the same data session similar to other embodiments previously discussed.
When a connection becomes disconnected or fails when transmitting data packets over the connection, the processing unit 201 then transmits an evaluation packet for determining the performance of all three connections. For example, when data packet 312 containing data-2 is transmitted over the first connection, the first connection is disabled at a time between t-1 and t-2 (e.g., at t-6). Processing unit 201 then does not wait until t-2 to transmit evaluation packet 313 containing data-3 over all three connections. Instead, the processing unit 201 transmits the evaluation packet 313 over the first, second and third connections at about t-6. The performance of the three connections may then be determined and a data packet 314 containing data-4 may be transmitted over one of the three connections according to the determined performance.
Alternatively, when the first connection fails, the processing unit 201 transmits the evaluation packet 313 only through the second and third connections and determines the performance of the second and third connections at t-6. The data packet 314 is then transmitted over the second or third connection according to the determined performance. The performance of the first connection is not determined because the first connection has failed and is not immediately available for transmitting data packets. This may also indicate that the first connection is less stable than the other connections and thus irregularities in the data transmission may be avoided by not using the first connection.
Fig. 4 shows an embodiment in which the connection is used in parallel to transmit data packets belonging to two data sessions. The timing diagram represents the transmission of evaluation packets and data packets over a connection at a communication device (e.g., communication device 106) according to one embodiment of the invention. For a better understanding, fig. 4 is considered in conjunction with fig. 2. Timing diagrams 401, 402 and 403 are for first, second and third connections, respectively. The communication device 106 is connected to the first, second and third connections through at least one of a plurality of network interfaces 205. The time instances are denoted t-0, t-1, t-6, t-2, t-3, t-7, t-4 and t-5, respectively.
The evaluation packets 410a, 410b and 410c are transmitted via the first, second and third connections, respectively, containing the same or substantially the same information data-0. Similarly, the evaluation packets 413a, 413b, and 413c contain the same or substantially the same information data-3. Similarly, the evaluation packages 416a, 416b, and 416c contain the same or substantially the same informational data-6. As previously described, the contents of the evaluation packages 410, 413, and 416 may belong to a predefined or randomly generated data session. Additionally, as previously described, the size of the evaluation packets 410a, 410b, and 410c may be the same. This also applies to the evaluation packets 413 and 416.
For purposes of illustration, packets 411 and 414, containing data-11 and data-12, respectively, belong to a first data session. Data packets 412 and 415, which contain data-21 and data-22, respectively, belong to the second data session. In one variation, the evaluation packages 410, 413, and 416 belong to a first data session or a second data session. A user or administrator can select which data sessions will be used for the evaluation package. Alternatively, the content of the evaluation packages 410, 413 and 416 do not belong to any data session and contain predefined information. In one variation, when a user or administrator of a communication device (e.g., communication device 106) gives a higher preference to a particular data session, the content of evaluation packages 410, 413, and 416 belongs to the particular data session with the higher preference. A user or administrator may have a higher preference for a particular data session for various reasons. For example, a user may want information for a particular data session to be transferred faster than information for other data sessions. For example, the user gives a higher preference to the first data session because the user wishes the information of the first data session to be transmitted earlier than the information of the second data session. The evaluation packets 410, 413 and 416 then belong to the first data session. When the evaluation packets 410, 413, and 416 carry information for the first data session, more information belonging to the first data session is transmitted than information belonging to the second data session within a given time period. Thus, it is more likely that information of the first data session is transmitted earlier than information of the second data session, depending on the user's preferences.
At about t-0, the evaluation packets 410a, 410b, and 410c are transmitted over the first, second, and third connections, respectively, to determine the performance of the connection. At about t-1, the processing unit 201 determines that the first connection has the best performance. Thus, the data packet 411 belonging to the first data session is transmitted over the first connection at about t-1. At about t-6, the communication device 106 may then begin transmitting data packets 412 belonging to the second data session. Thus, although there are two persistent data sessions, the communication device 106 uses only one connection for transmitting data packets at a given time. The evaluation packets 413a, 413b and 413c are transmitted over the first, second and third connections, respectively, for determining the performance of the connection at about t-2. At about t-3, the processing unit 201 determines that the second connection has the best performance. Accordingly, the data packet 414 belonging to the first data session is transmitted over the second connection at about t-3. After having transmitted the data packet 414 at about t-7, the processing unit 201 transmits the data packet 415 belonging to the second data session and re-evaluates the performance of the first, second and third connections again at about t-4. Thus, the evaluation packets 416 consisting of the evaluation packets 416a, 416b, and 416c are transmitted through the first, second, and third connections, respectively, to determine their performance.
As shown in fig. 4, only one connection is used to transmit data packets at a given time even when there are two data sessions. For clarity, the invention is also applicable to three or more data sessions. One of the advantages of this is that if the connections are connected to or through the same network, the bandwidth available to one connection may be more or less the same as the bandwidth available to all connections. In addition, using only one connection in the case where the connection is a radio access connection may reduce channel interference. For example, the first connection may have a bandwidth capacity that is not interfered by the second and third radio access connections when transmitting data packets 411 belonging to the first data session. Furthermore, the amount of processing power and computing resources required may be less when one connection is used at a time than when more than one connection is used at a time.
In one variant, the first, second and third connections are access connections, for example wireless access connections using Wi-Fi, LTE and/or 3G communication technologies. In one variation, the first, second, and third connections are VPN tunnels between the communication devices 106 and 108.
Fig. 5 shows an embodiment of the invention in which more than one connection is used to transmit data packets belonging to more than one data session. For a better understanding, fig. 5 is seen in conjunction with fig. 2. Timing diagrams 501, 502 and 503 are for the first, second and third connections, respectively. The communication device 106 is connected to the first, second and third connections through at least one of a plurality of network interfaces 205. The time instances are denoted t-1, t-2, t-3, t-4 and t-5, respectively.
The evaluation packets 510a, 510b and 510c are transmitted via the first, second and third connections, respectively, and contain the same or substantially the same information data-0. Similarly, evaluation packets 513a, 513b, and 153c contain the same or substantially the same information data-3. Similarly, evaluation packets 516a, 516b, and 516c contain the same or substantially the same informational data-6. The contents of the evaluation packets 510, 513, and 516 may belong to a predefined or randomly generated data session. Additionally, as previously described, the size of the evaluation packages 510a, 510b, and 510c may be the same. This also applies to evaluation packets 513 and 516.
In fig. 5, the transmission of data packets belonging to two data sessions is shown. Thus, packets 511 and 514, which contain data-11 and data-12, respectively, belong to the first data session. Data packets 512 and 515 containing data-21 and data-22, respectively, belong to a second data session. In one variation, evaluation packets 510, 513, and 516 belong to either a first data session or a second data session. The user or administrator can choose to evaluate to which data session the package belongs. Alternatively, the evaluation packets 510, 513, and 516 do not belong to any data session and contain predefined information.
At t-0, evaluation packets 510a, 510b, and 510c are transmitted over the first, second, and third connections, respectively, to determine the performance of the connection. At about t-1, the processing unit 201 determines that the first connection has the best performance and the second connection has the second best performance. At about t-1, data packets 511 belonging to a first data session and data packets 512 belonging to a second data session are transmitted over the first connection and the second connection, respectively.
In one variation, the user or administrator gives the first data session a higher preference. Thus, the processing unit 201 determines that the data packets 511 belonging to the first data session are transmitted over the first connection with the best performance, since the user wants the first data session to be faster and more reliable. The data packets 512 belonging to the second data session are transmitted over the second connection with the second best performance.
In one variation, the user or administrator does not have any preference for a particular data session. Thus, the processing unit 201 uses the first and second connections to randomly transmit data packets belonging to the first or second data session. Thus, as an alternative to the example in fig. 5, the data packet 512 may be transmitted over the first connection instead of the second connection, and the data packet 511 may be transmitted over the second connection instead of the first connection.
At about t-2, evaluation packets 513a, 513b, and 513c are transmitted over the first, second, and third connections, respectively, to again determine the performance of the connection. At about t-3, the processing unit 201 determines that the second and third connections have the best performance.
In a variant, when the user or administrator gives the first data session a higher preference, the data packets 514 belonging to the first data session are transmitted over the second connection, since the second connection has the best performance, and the data packets 515 belonging to the second data session are transmitted over the third connection.
Alternatively, if the user or administrator does not have any preference for a particular data session, the second and third connections are randomly used to transmit data packets belonging to the first or second data session. Thus, as an alternative to the example in fig. 5, the data packet 515 may be transmitted over the second connection instead of the third connection, and the data packet 514 may be transmitted over the third connection instead of the second connection.
In one variation, the user or administrator does not have any preference for a particular data session. After a previous evaluation time period (i.e., t-0 to t-1), it is determined that the connection, e.g., the second connection, is one of the connections having the best performance. After evaluating the time periods t-2 to t-3 the second connection is again determined to be one of the connections having the best performance. In this case, it is preferable not to change the connection for the data session if possible. More specifically, since the second connection is used from t-1 through t-2 to transmit the data packet 512 belonging to the second data session, the second connection is again used from t-3 through t-4 to transmit the data packet 515 belonging to the second data session. In this way, the second data session will be smoother, since the used connection is not switched.
When two connections are used to transmit packets of two data sessions, respectively, the packets of the first and data sessions may be transmitted simultaneously by using a load balancing technique. Since the two data sessions may be parallel, it is likely that the transfer is completed faster than when only one connection is used for both data sessions, especially when both connections are not connected to or passing through the same network. However, there may be some interference caused by the simultaneous use of two connections. The processing power and resources required when the connection is balanced are also higher.
Comparing fig. 3A, fig. 4 and fig. 5, fig. 3A shows the transmission of data packets belonging to one data session, where only one connection is used at a given time. On the other hand, fig. 4 shows the transmission of data packets belonging to two data sessions, and only one connection is used at a given time. Fig. 5 also shows the transmission of data packets belonging to two data sessions, but unlike fig. 4, the data packets belonging to two data sessions are transmitted separately at a given time using two connections.
In a variant, after transmitting the evaluation packets 510 and 513, the processing unit 201 may have decided that all three connections have met the performance requirements, and may thus transmit the data packets 511, 512, 514 and 515 over all three connections.
Fig. 6 illustrates a timing diagram representing transmission of an evaluation packet and a data packet over a connection at a communication device (e.g., communication device 106) according to one embodiment of the invention. For a better understanding, fig. 6 is seen in conjunction with fig. 2. Timing diagrams 620, 621, 622, 630, and 631 are for the first, second, third, fourth, and fifth connections, respectively. The communication device 106 is connected to the first, second, third, fourth and fifth connections through at least one of a plurality of network interfaces 205. Time instances are indicated as t-1, t-2, t-3, t-4 and t-5, respectively. In one variation, the first, second, third, fourth, and fifth connections are access connections to a network interface 205 of the communication device 106. In one variation, the first, second, third, fourth, and fifth connections are logical connections to the communication device 106 through the network interface 205.
The first, second, third, fourth and fifth connections are divided into two groups. The first, second and third connections belong to a first group and the fourth and fifth connections belong to a second group. The processing unit 201 selects one connection from each group for transmitting the data packet. Thus, the processing unit 201 determines the capabilities of the first set of connections and selects one of the connections in the first set for transmitting the data packet based on the capabilities. Similarly, the processing unit 201 determines the capabilities of the second set of connections and selects one of the connections in the second set for transmitting the data packet based on the capabilities. The performance of the first and second set of connections may be determined synchronously or nearly synchronously.
The connections are grouped into more than one group by the processing unit 201 based on which specific types of data packets the connection is adapted to transmit. Alternatively, connections may be grouped into groups according to policy, for administrative purposes, according to historical performance evaluations, or for any other reason that connections having different groups would be desirable. A user or administrator may select more than one connection from each group for transmitting data packets. They may also choose not to use any connection from some group for transmitting data packets. Thus, the scope of the invention is not limited to using one connection from each group for transmitting data packets.
The evaluation packets 610a, 610b and 610c transmitted via the first, second and third connections, respectively, contain the same or substantially the same information data-10. Similarly, evaluation packages 614a, 614b, and 614c contain the same or substantially the same informational data-12. Similarly, evaluation packets 618a, 618b, and 618c contain the same or substantially the same informational data-14. The evaluation packets 612a and 612b transmitted via the fourth and fifth connections, respectively, contain the same or substantially the same information data-20. Similarly, evaluation packets 615a and 615b contain the same or substantially the same informational data-22. Similarly, evaluation packages 619a and 619b contain the same or substantially the same informational data-24. The transmission evaluation packets 610, 614, and 618 are used to determine the performance of the first set of connections. The transmission evaluation packets 612, 615 and 619 are used to determine the performance of the second set of connections. As previously described, the contents of the evaluation packages 610, 614, 618, 612, 615, and 619 may belong to a data session, may be predefined, or may be randomly generated. In addition, as previously described, the size of the evaluation packets 610a, 610b, and 610c may be the same. This also applies to the evaluation packages 614, 618, 612 and 619.
The evaluation packets 610a, 610b and 610c are transmitted over the first, second and third connections, respectively, at about t-1. The performance of the first set of connections is determined by transmitting an evaluation packet 610 over all three connections of the first set. The processing unit 201 determines that the performance of the first connection is the best among the first set of connections. Thus, at about t-1, processing unit 201 determines to transmit data packet 611 containing data-11 over the first connection. Similarly, at about t-0, the performance of the second set of connections is determined by transmitting evaluation packets 612a and 612b via the fourth and fifth connections, respectively. At about t-1, the processing unit 201 determines that the fifth connection has the best performance among the second set of connections. Thus, processing unit 201 determines that data packet 613 containing data-21 was transmitted over the fifth connection at approximately t-1.
The processing unit 201 determines the performance of the first set of connections again by transmitting the evaluation packets 614a, 614b and 614c at about t-2 via the first, second and third connections, respectively. At about t-3, the processing unit 201 determines that the second connection has the best performance. Accordingly, a data packet 616 containing data-13 is transmitted over the second connection at about t-3. At the same time, the performance of the second set of connections is determined by transmitting evaluation packets 615a and 615b at approximately t-2 via the fourth and fifth connections, respectively. At about t-3, the processing unit 201 determines that the fourth connection has the best performance among the second set of connections. Thus, a data packet 617 containing data-23 is transmitted over the fourth connection at about t-3. At about t-4, evaluation packets 618a, 618b, and 618c are transmitted over the first, second, and third connections, respectively, and evaluation packets 619a and 619b are transmitted over the fourth and fifth connections, respectively, for determining the performance of the first and second sets of connections, respectively.
In one embodiment, the plurality of network interfaces 205 are grouped into first and second groups. The performance of the connections to the network interfaces in the first group is determined by transmitting evaluation packets 610, 614, and 618. The evaluation packets 610, 614 and 618 are transmitted over the connections to the network interfaces in the first group. The performance of the connection to the network interface in the second group is determined by transmitting the evaluation packets 612, 615, and 619. The evaluation packets 612, 615 and 619 are transmitted over the connection to the network interface in the second group. One network interface from each group is selected for transmitting the data packet according to the determined performance. Thus, the network interface connected to the connection with the best performance is selected from each group.
At a given time, two connections are used at the communication device 106 to transmit the data packet. One of the two connections belongs to the first group and the other of the two connections belongs to the second group. In one variant, when the first, second, third, fourth and fifth connections are logical connections, the two connections used to transport the data packets are bound together to form an aggregated connection. Instead, the two connections used to transmit the data packets are equalized. In one embodiment, the connections are grouped into groups by the processing unit 201 based on certain conditions. The conditions are stored in the secondary storage 204. The conditions are selected from the group consisting of: performance metrics, service providers, usage metrics, location, time, usage price, security, user, internet protocol address range, communication protocol, communication technology, application, and device. A connection may belong to a certain group if it meets a condition corresponding to the certain group. A connection may belong to more than one group.
In an example, seen in connection with fig. 6, there are two persistent data sessions at the communication device 106. The first data session between the communication devices 106 and 108 is a File Transfer Protocol (FTP) session and the second data session between the communication devices 106 and 108 is a video conference session. The FTP session uses a first set of connections comprising first, second and third connections, and the videoconference session uses a second set of connections comprising fourth and fifth connections. The evaluation packets 610a, 610b, and 610c have the same size. Evaluation packages 610a, 610b, and 610c may or may not have the same information. Evaluation packets having the same size are used to accurately determine and compare the performance of the connections. The evaluation packets 612a and 612b have the same size. This also applies to the evaluation packets 614, 615, 618 and 619. Data-10, data-12, and data-14 are predefined data contained in evaluation packages 610, 614, and 618, respectively. The data packets 611 and 616 containing data-11 and data-13, respectively, are packets of files belonging to the FTP session. Therefore, the FTP session is instantaneously interrupted when the performance of the connection is determined, and the transmission of the packets of the file is resumed when the determination is completed. Data-20, data-21, data-22, data-23, and data-24 are the first, second, third, fourth, and fifth frames of the videoconference session. At a given time, the connections used by the FTP session and the connections used by the video conference session are balanced or bundled using load balancing techniques to form an aggregated connection.
Comparing fig. 6 with fig. 4, fig. 6 and 4 each show the transmission of packets belonging to two data sessions. However, in fig. 6, packets belonging to two data sessions are transmitted over two connections grouped into different groups. The evaluation packets transmitted over each group of connections may be different. At a given time, two connections are used to transmit a data packet. On the other hand, in fig. 4, only one connection is used to transmit a packet at a given time, and the connections are grouped into different groups.
Comparing fig. 6 with fig. 5, fig. 6 and 5 each show the transmission of packets belonging to two data sessions, and in fig. 6 and 5 both connections can be used at a given time. The difference between fig. 6 and fig. 5 is that in fig. 6 the connections are grouped into different groups. In some scenarios illustrated in fig. 6, the evaluation packets 610, 614, and 618 transmitted over the first set of connections contain data belonging to a first data session, and the evaluation packets 612, 615, and 619 transmitted over the second set of connections contain data belonging to a second data session. However, in the scenario shown in fig. 5, the assessments transmitted over all connections contain the same data. Whether the same data belongs to the first data session or the second data session does not depend on the group to which the connection belongs. Thus, in fig. 6, the evaluation of different groups of connections may be performed in different processes.
Further, in fig. 5, the data packets belonging to the first and second data sessions are transmitted over any two connections determined to have the best performance. Whereas in fig. 6 the data packets belonging to the first data session are transmitted over the connection having the best performance among the first set of connections and the data packets belonging to the second data session are transmitted over the connection having the best performance among the second set of connections.
As shown in fig. 6, a benefit of selecting one connection from each group may be that each group of connections may be optimal for transmitting a particular type of packet. Since the first data session and the second data session may comprise different types of data packets, it may be necessary to transmit data packets belonging to different data sessions over different groups of connections. However, if there is a frequent change in data type, then classifying connections according to data type consumes higher computational resources.
In the alternative, fig. 6 shows the transmission of packets belonging to one data session. Thus, data packets 611, 613, 616, and 617 belong to the same data session. Evaluation packets 610, 612, 614, 615, 618, and 619 may also belong to the same data session as data packets 611, 613, 616, and 617.
Fig. 7 illustrates a timing diagram representing the transmission of an evaluation packet and a data packet over a logical connection at a communication device (e.g., communication device 106) in accordance with one embodiment of the present invention. Timing diagrams 701, 702, 703, 704, and 705 are for first, second, third, fourth, and fifth logical connections, respectively. The communication device 106 is connected to the first, second, third, fourth and fifth logical connections through at least one of a plurality of network interfaces 205. Time instances are indicated as t-1, t-2, t-3, t-4 and t-5, respectively.
At a given time, the communication device 106 transmits the data packet using two logical connections. Two logical connections are selected based on the performance determined by the processing unit 201. The performance of five logical connections is determined by transmitting an evaluation packet containing the same information through all five logical connections.
The evaluation packets 710a, 710b, 710c, 710d and 710e transmitted over the first, second, third, fourth and fifth logical connections, respectively, contain the same or substantially the same information data-0. Similarly, the evaluation packages 713a, 713b, 713c, 713d, and 713e contain the same or substantially the same information data-3. Similarly, evaluation packets 716a, 716b, 716c, 716d, and 716e contain the same or substantially the same informational data-6. Evaluation packets 710, 713, and 716 are transmitted by processing unit 201 for determining the performance of the logical connection. As previously described, the contents of the evaluation packages 710, 713, and 716 may belong to a data session, be predefined, or be randomly generated. In addition, as previously described, the size of the evaluation packets 710a, 710b, and 710c may be the same. This also applies to the evaluation packets 713 and 716.
At about t-0, the processing unit 201 determines to transmit the evaluation packets 710a, 710b, 710c, 710d, and 710e over the first, second, third, fourth, and fifth logical connections, respectively. At about t-1, the processing unit 201 determines the performance of the five logical connections and selects the two logical connections (i.e., the first and third logical connections) with the best performance for transmitting the data packet. For example, the third logical connection has the best performance and the first logical connection has the second best performance. Thus, a data packet 711 containing data-1 and a data packet 712 containing data-2 are transmitted over the first and third logical connections, respectively, at approximately t-1.
At about t-2, the processing unit 201 re-determines the performance of the five logical connections by transmitting the evaluation packets 713a, 713b, 713c, 713d and 713e via the first, second, third, fourth and fifth logical connections. The performance of the first logical connection continues to be one of the best performance among the five logical connections. Thus, data packet 714 containing data-4 is transmitted over the first logical connection at about t-3. While the data packet 715 containing data-5 is transmitted over the fourth logical connection because the fourth logical connection is determined to be the other of the five logical connections having the best performance. An evaluation packet 716 is transmitted at about t-4 for re-determining the performance of the five logical connections.
In an example, the communication device 106 transmits voice over internet protocol (VoIP) packets belonging to a VoIP session to the communication device 108 over the aggregated connection. It will be known to those skilled in the art that the latency of the connection is preferably below about 500 milliseconds in order to achieve a suitable quality of the VoIP session. The aggregated connections include first, second, third, fourth, and fifth logical connections that are VPN tunnels. The evaluation packets 710a, 710b, 710c, 710d, and 710e have the same size and contain the same information data-0. This also applies to the evaluation packets 713 and 716. Evaluation packet 710, data packet 711, data packet 712, evaluation packet 713, data packet 714, data packet 715, and evaluation packet 716 are VoIP packets belonging to a VoIP session. In addition, data-0, data-1, data-2, data-3, data-4, data-5, and data-6 may be encapsulated in an encapsulation packet containing encryption information associated with the authentication required to connect to the VPN tunnel. A connection having a latency of less than about 500 milliseconds may be selected for transmitting the VoIP packet.
In one embodiment, the evaluation packets 710, 713, and 716 are transmitted over the plurality of network interfaces 205 to determine the performance of logical connections established over the plurality of network interfaces 205. One or more network interfaces connected to the connection determined to have the best performance are selected for transmitting the data packet. The data packets are transmitted using at least one logical connection established through the selected network interface. For example, the first network interface is determined to have the best performance. The first network interface is connected to the first and second logical connections. The processing unit 201 determines to use at least one of the first and second logical connections for transmitting the data packet.
Comparing fig. 7 with fig. 3A, both figures show the transmission of packets belonging to one data session. The difference is that in fig. 7, two logical connections are used to transmit a packet at a given time, whereas in fig. 3A, one connection is used to transmit a packet at a given time. The benefit of the scenario shown in fig. 7 is that higher bandwidth is available for the data session because more than one logical connection is used to transmit the data packets. In fig. 7, since data packets belonging to one data session are transmitted over more than one logical connection, the logical connections are bound to form an aggregated connection. In fig. 3A, the connection may be an access connection or a logical connection. However, in fig. 7, only logical connections are used, and access connections cannot be used because access connections cannot be aggregated.
In the alternative, fig. 7 shows the transmission of packets belonging to two data sessions. Thus, packets 711 and 712 may belong to different data sessions. Similarly, data packets 714 and 715 may belong to different data sessions.
In FIGS. 3A, 4, 5, 6, and 7, the reason for periodically determining the performance of the connection (e.g., once at t-0, again at t-2, and again at t-4) is that performance may change from time to time. In many scenarios, the performance of connections, especially those connected to a wireless network, is not stable, and some connections have satisfactory performance at one time and unsatisfactory performance at another time. In a preferred embodiment, when determining the performance of the connection, the time period between determining the performance is in the range of five seconds to one minute. The performance is determined periodically every five seconds to one minute to accommodate changes in the network environment, as the performance of the connection may change every few seconds. Thus, time periods t-0 through t-2 and time periods t-2 through t-4 are in the range of five seconds to one minute. Alternatively, when determining the performance of the connection in order to check for connection failures, the time period allowed between performance evaluations is preferably in the range of half an hour to one hour. Thus, time periods t-0 to t-2 and time periods t-2 to t-4 are in the range of half an hour to one hour. The process continues after t-5. Fig. 3A, 4, 5, 6 and 7 only show how data packets are transmitted over each connection for periodically determining the performance of the connection and selecting one connection for transmitting data packets based on the determined performance. After t-5, the processing unit 201 selects a connection for transmitting the data packet based on the performance of the connection determined at about t-5. Therefore, it should be noted that the process does not end after t-5.
In another example, in fig. 7, evaluation packets 710, 713, and 716 belong to the same data session as data packets 711, 712, 714, and 715. Thus, the evaluation packet and the data packet are transmitted in the data session, and each of the packets has a sequence number so that the communication device 108 as a receiving device can arrange them accordingly.
The evaluation packet and the data packet are assigned corresponding sequence numbers. The sequence number is in the information contained in the evaluation package. When the evaluation packet and the data packet are assigned corresponding sequence numbers, the designated host or node arranges the packets according to the corresponding sequence numbers of the packets arriving at the designated host or node. When an assessment belonging to a data session contains the same or substantially the same information and arrives at a designated host or node, the designated host or node can identify assessment packets containing the same or substantially the same information based at least in part on the sequence number. The designated host or node may choose to ignore, discard, or otherwise process evaluation packets that arrive after the first evaluation packet. They may choose to process the evaluation package for statistical purposes, such as monitoring performance and maintaining a performance record. The information is contained or encapsulated in the payload of the evaluation package.
According to one embodiment, an evaluation package for determining the performance of a connection is transmitted over the connection during a first predefined time period. Transmitting the data packet over the connection for a second predefined time period when the connection is selected to transmit the data packet based on the performance of the connection. For example, looking at FIG. 3A, FIG. 4, FIG. 5, FIG. 6, or FIG. 7, the first predefined time period is equal to the time period between t-0 and t-1, between t-2 and t-3, or between t-4 and t-5. In one variant, the time period between t-0 and t-1 is slightly longer than the time period between t-2 and t-3 or between t-4 and t-5, since the initialization time of the connection is included in the time period between t-0 and t-1. In one variation, the time periods of t-0 to t-1, t-2 to t-3, and t-4 to t-5 are not the same, but each may be predefined. In one variation, the time periods between t-0 and t-1, t-2 and t-3, or t-4 and t-5 are the same and predefined. Similarly, the second predefined time period is equal to the time period between t-1 and t-2 or between t-3 and t-4. In one variation, the time periods of t-1 to t-2 and t-3 to t-4 are not the same, but each may be predefined. Alternatively, the time periods t-1 to t-2 and t-3 to t-4 are the same and predefined. The corresponding predefined time period may be set by a user, manufacturer, or administrator of the communication device 106. In one variation, the user sets the predefined time period through a web interface, application Programming Interface (API), command line interface, or console. The processing unit 201 retrieves the predefined time period either locally from the secondary storage 204 or remotely from a remote server.
In one embodiment, the frequency of determining the performance of the connection at the communication device (e.g., communication device 106) is low if the connection is stable. Therefore, the transmission frequency of the evaluation packet decreases. The time period during which the data packets are transmitted continuously is significantly longer than when the connection is unstable. When the connection is stable, it is more likely that the connection determined to have the best performance after evaluation will continue to have the best performance for a longer time. Alternatively, when the connection is unstable, it is unlikely that the connection determined to have the best performance after the evaluation continues to have the best performance for a long time. It will be known to those skilled in the art that the performance may change at any time every 5 seconds. Thus, when the connection is stable, determining the performance of the connection is performed less often and the data packets are transmitted continuously for a longer period of time. When the connection is unstable, determining the performance of the connection is performed more frequently and data packets are transmitted continuously for a shorter period of time. This is particularly important for wireless communications, where connections are more likely to be unstable.
In one embodiment, the evaluation packet is transmitted for a longer period of time. For example, the time period between t-0 and t-1 is longer. The benefit of transmitting the evaluation packet for a longer period of time is that the performance evaluation results better. This is because a greater number of evaluation packets can be transmitted within the time period and the evaluation is therefore more reliable. However, transmitting the evaluation packet for a longer period of time causes the communication device 106 to exhaust more bandwidth for evaluation, and since the evaluation packet is transmitted over multiple connections, an increase in bandwidth usage may be significant. In addition, if the assessment contains information that is predefined and not belonging to a data session, the data streaming will be interrupted, interrupted or suspended for a longer period of time, and this may be undesirable. When there are two persistent data sessions and the evaluation packet belongs to the first data session, the second data session may be interrupted for a longer period of time, which is undesirable in most scenarios. Alternatively, the evaluation packet is transmitted for a shorter period of time. Thus, less bandwidth is consumed during the evaluation of the connection performance. In one variant, transmitting the evaluation package for a shorter time period is also desirable when the evaluation contains predefined information and does not belong to a data session, because the time period during which the data stream transmission is interrupted is shorter. However, since a smaller number of evaluation packets may be transmitted in a shorter time period, the evaluation may not be reliable enough.
In one embodiment of the invention, when two or more logical connections are selected for transmitting a data packet, the two or more logical connections are bound to form an aggregated connection. Two or more logical connections are bound as long as packets transmitted over the two or more logical connections belong to the same data session. The two or more logical connections are end-to-end connections formed between the two nodes, where the communication device 106 is one of the two nodes. To form an aggregated connection, a data packet encapsulates a packet before transmitting the packet over two or more logical connections. The packet may originate from the communication device 106 and/or from a host and/or node connected to the communication device 106. Using aggregated connections is beneficial for having a higher total bandwidth, which is the combined bandwidth of the individual logical connections. The aggregated connection is treated as one logical connection by the session or application using it. For example, in connection with FIG. 7, during time periods t-1 through t-2, the first and third logical connections are used to transmit data packets. Thus, the first and third logical connections are bound together to form an aggregated connection. Similarly, in time periods t-3 through t-4, the first and fourth logical connections are bundled and included in the aggregated connection. The third logical connection may still be included in the aggregated connection, but it is not used to transmit data packets. Alternatively, the third logical connection is removed from the aggregated connections when the third logical connection is not being used to transmit data packets. This may also apply to fig. 6, where two connections selected for transmission of a data packet are bound together at a given time to form an aggregated connection.
Alternatively, when two or more connections are selected for transmitting data packets, the two or more connections are equalized. Preferably, two or more connections are equalized when data packets transmitted over the two or more connections belong to different data sessions. Data packets are distributed and transmitted over two or more connections using load balancing techniques or any other technique that allows data packets to be distributed and transmitted between multiple connections. For example, in connection with FIG. 7, packets are distributed between and transmitted over the first and third logical connections from t-1 to t-2. Similarly, from t-3 to t-4, packets are distributed between and transmitted over the first and fourth logical connections. This also applies to fig. 6, where a data packet is distributed between and transmitted over two connections belonging to two different groups and selected for transmission of the data packet at a given time.
In the embodiments described herein, the performance of the connection is determined according to at least one of the following criteria: throughput, error rate, packet delay, packet jitter, symbol jitter, quality of service, security, coverage area, bandwidth, error rate, packet error rate, frame error rate, packet loss rate, queuing latency, round trip time, capacity, signal level, interference level, bandwidth latency product, handover latency, signal-to-interface ratio, and signal-to-noise ratio. For example, when determining the performance according to the packet loss rate, it is determined that the connection having the least packet loss rate has the best performance. In another example, when determining performance based on throughput, the connection with the highest throughput is determined to have the best performance. Performance may be determined based on more than one criterion.
In one variation, a user or administrator may configure the communication device 106 to determine performance according to some standard. If the user or administrator selects bandwidth, the bandwidth of the connection will be evaluated and the connection with the highest bandwidth will be selected for transmitting data. If the user or administrator selects the latency, the latency of the connection will be evaluated and the connection with the lowest latency will be selected for transmitting data.
FIG. 8A is a flow diagram illustrating a process according to one embodiment of the invention. In step 801, the processing unit 201 determines the performance of the connection by transmitting an evaluation packet via the connection. If it is determined in step 802 that the performance of the connection is worse than the threshold, the connection is terminated in step 803. Alternatively, if it is determined that the performance is not worse than the threshold, the connection is not terminated in step 804. When a connection is terminated, no more evaluation packets are transmitted over the connection and therefore the performance of the connection is no longer determined. Computational and bandwidth resources may be saved by not performing the determination of the connection performance. For example, looking at fig. 3A, in step 801, the processing unit 201 determines the performance of the third connection by transmitting the evaluation packet 311c. In step 802, the processing unit 201 determines that the performance of the third connection is worse than a threshold. The third connection is terminated and no evaluation packets 313c and 315c are transmitted over the third connection in step 803.
In a preferred embodiment, as shown in FIG. 8B, if the connection has worse than threshold performance, the connection is not terminated, but no other evaluation or data packets are transmitted over the connection in step 813. If it is determined that the performance of the connection is not worse than the threshold, the connection is not terminated and further evaluation packets are sent over the connection in step 814. A benefit of performing step 813 instead of step 803 is that when the user or administrator subsequently wants to use the connection, they will not need to establish the connection again. Establishing a connection may take some time and computing resources. Thus, the connection is not terminated but only not allowed to be used for the transmission of further evaluation packets or data packets.
The threshold may be predefined and stored in a storage medium, such as secondary storage 204 or primary storage 202. The threshold may be set by a user or administrator of the communication device 106. The threshold may be part of the settings required to establish the connection.
If the performance of the connection is worse than the threshold, terminating the tunnel or not sending the evaluation packet over the connection may be beneficial to save bandwidth resources and other computing resources.
FIG. 9 is a flow diagram illustrating a process according to one embodiment of the invention. The latency requirements of the data packets are determined and a connection for transmitting the data packets is selected based on the latency requirements of the data packets. For purposes of illustration, since the latency requirement of packets belonging to voice traffic may be less than about 500 milliseconds, packets belonging to voice traffic are transmitted only over connections having a latency of less than about 500 milliseconds. Referring to fig. 9, in step 901, the latency of a connection is determined by transmitting an evaluation packet over the connection. If the processing unit 201 determines in step 911 that the latency of the connection is above the first threshold, then the connection is terminated or it is determined not to use the connection to transmit packets in step 921. Preferably, the first threshold is about 1000 milliseconds, so that if the latency of a connection is higher than 1000 milliseconds, then it is determined in step 921 that the connection is not to be used. If the latency is not above the first threshold, the processing unit 201 determines in step 912 whether the latency is above a second threshold. If the time delay is above the second threshold, the connections are grouped into a first group in step 922. The connections in the first group are allowed to be used for any traffic other than video traffic and voice traffic. Preferably, the second threshold is about 800 milliseconds. The connections in the first set, such as the connection, have a latency of more than about 800 milliseconds, which is not suitable for video transmission or voice transmission due to the higher latency. Thus, they are not used for video traffic and voice traffic, but they can be used for any other type of traffic where a delay of more than about 800 milliseconds can be tolerated. If the latency of the connection is not above the second threshold, the connection may be allowed to be used for video traffic. At step 913, the processing unit 201 determines whether the latency of the connection is above a third threshold. If the latency is above a third threshold, the connection is grouped into a second group in step 923. The third threshold is preferably about 500 milliseconds. The connections in the second group are allowed for video transmission but not for voice transmission, because the quality of video transmission may be satisfactory with a delay above about 500 milliseconds and below about 800 milliseconds, but the quality of voice transmission may be very poor with a delay above about 500 milliseconds. If the connection has a latency not higher than a third threshold, the connection is grouped into a third group. The connections in the third group allow for video transmission and voice transmission, as the quality of voice transmission may be satisfactory with a latency of less than about 500 milliseconds. The first, second, and third thresholds are configurable and may be configured by a user or administrator of the communication device 106.
According to one embodiment of the invention, one or more connections having a relatively high latency are terminated, or packets are not transmitted over, if the latency difference between two or more of the aggregated connections is above a latency deviation threshold. For purposes of illustration, the delay variation threshold is about 500 milliseconds. The latency of the first connection is 400 milliseconds and the latency of the second connection is 950 milliseconds. Since the delay difference between the first and second connections is higher than about 500 milliseconds, the second connection is terminated or not used to transmit data packets. In another example, the latency of the first, second, and third connections is 400, 950, and 980 milliseconds, respectively, and the latency deviation threshold is about 500 milliseconds. Since the delay difference between the first connection and both the second and third connections is higher than about 500 milliseconds, the second and third connections are no longer used to transfer data and can be terminated. In another example, when the latency of the first connection is approximately 10 milliseconds and the latency of the second connection is approximately 200 milliseconds, the second connection is no longer used to transmit packets and may be terminated. When packets are transmitted from the communication device 106 to the communication device 108 over an aggregated connection comprising a first connection and a second connection, first packets transmitted over the first connection may arrive much earlier than second packets transmitted over the second connection. Even if the third and fourth packets arrive earlier through the first connection, the communication device 108 acknowledges only the arrival of the first packet and transmits all three second, third, and fourth packets again since the second packet has not yet arrived. Thus, resources may be saved by terminating or not using the second connection, such that all four first, second, third and fourth packets are transmitted over the first connection and no retransmission of the packets is required.
In one variant, the second connection may be used to transmit any packet other than a data packet, such as a running security check packet, an evaluation packet, and the like. If it is subsequently determined that the latency of the second connection has become reduced, the second connection may be reused to transmit the data packet. To monitor the latency of the second connection, the communication device 106 does not terminate the second connection and continues to send evaluation packets over the second connection even after determining that the difference in latency is above the latency deviation threshold.
In one variation, the delay variation threshold is predefined and may be set by a user or administrator of the communication device 106. Alternatively, the delay skew threshold may be set periodically by the processing unit 201. Alternatively, the latency deviation threshold may be set dynamically or automatically by the processing unit 201 based at least in part on an average latency of two or more of the aggregated connections. The average delay may be calculated based on the delay values evaluated over a particular time period. The specific time period may be in the range of 10 milliseconds to 5 minutes. The delay variation threshold may be set as a percentage value of the average delay. For illustration purposes, the latency deviation threshold may be set to 20% of the average latency of all connections of the aggregated connection. When the first, second and third connections experience delays of about 400 milliseconds, 500 milliseconds and 900 milliseconds, respectively, the average delay is about 600 milliseconds. The delay variation threshold may then be dynamically set to 20% of 600 milliseconds, i.e., 120 milliseconds. Since the difference between the delay of the third connection and the average delay is more than 120 milliseconds, the processing unit 201 may determine not to use the third connection for transmitting the data packet. The percentage value may be configured by a user or administrator. In another example, the latency skew threshold may be set to 30% of the average latency of connections with relatively low latency (rather than all of the aggregated connections). When the first, second and third connections experience delays of about 400 milliseconds, 500 milliseconds and 900 milliseconds, respectively, the average delay of the relatively low-delay connection is about 450 milliseconds. The delay variation threshold may be automatically set by the processing unit 201 to 30% of 450 ms, i.e. 135 ms. Since the difference between the latency of the third connection and the average latency is more than 135 milliseconds, the processing unit 201 may determine not to use the third connection for transmitting the data packet. In another variation, a user or administrator of the communication device 106 may define a policy for dynamically setting the latency skew threshold. To illustrate, the policy is defined such that if the average latency of a connection with a relatively low latency is less than 100 milliseconds, the latency deviation threshold is dynamically set to 100 milliseconds. The policy may be further defined such that the delay variation threshold is dynamically set to 400 milliseconds if the average delay of a connection with a relatively low delay is between 100 milliseconds and 500 milliseconds. It should be appreciated that these values are exemplary and that there may be various other ways to dynamically set the delay variation threshold. A connection with a relatively low latency may comprise any connection other than the connection with the highest latency. Alternatively, a connection with a relatively low latency may comprise any connection with a latency within a range of the lowest latency.
When there are more than two connections, the delay skew threshold can be used in different ways. For purposes of illustration, there are five connections, namely, first, second, third, fourth, and fifth connections. The fifth connection has the highest latency and the first connection has the lowest latency. If the difference between the highest latency (i.e. the latency of the fifth connection) and the lowest latency (i.e. the latency of the first connection) exceeds the latency deviation threshold, the fifth connection is no longer used for transmitting data packets and may be terminated. In another example, if the difference between the latency of the fifth connection and the average latency of the first, second, third, and fourth connections is above a latency deviation threshold, the fifth connection is no longer used to transmit data packets and may terminate. In another example, when the latency of each of the first, second, third, and fourth connections is about 500 milliseconds, the latency of the fifth connection is about 1000 milliseconds, and the latency variance threshold is 400 milliseconds, the fifth connection is not used to transmit packets and may be terminated. In one example, the mean, variance and standard deviation of the time delays of the first, second, third, fourth and fifth connections are calculated. The delay deviation threshold is set to the standard deviation of the delay. If the difference between the delays of the connections is higher than the standard deviation, one or more of the connections with relatively high delays are no longer used for transmitting data and may be terminated.
For purposes of illustration, when there are one or more connections established through the LTE network or the ethernet interface, the processing unit 201 is not connected to the 3G network, even when it is able to do so through one or more of the network interfaces 205. It is known to those skilled in the art that the latency of a connection established over a 3G network can be significantly higher than the latency of a connection established over an LTE network or an ethernet interface.
The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. The ensuing description provides preferred exemplary and exemplary embodiments only, and is not intended to limit the scope, applicability, or configuration of the invention. Indeed, the preferred exemplary embodiments and the following description of the exemplary embodiments will provide those skilled in the art with a useful understanding of how to implement the preferred exemplary embodiments of the present invention. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.
It is also noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. Further, the order of the operations may be rearranged. A process terminates when its operations are completed, but may have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a procedure corresponds to a function, the termination of the procedure corresponds to the return of the function to the calling function or the main function.
Embodiments, or portions thereof, may be implemented in program instructions operable on a processing unit for performing functions and operations as described herein. The program instructions that make up the various embodiments may be stored in a storage medium, such as in an auxiliary storage device.
Further, as disclosed herein, the terms "secondary storage device" and "primary storage" may represent one or more devices for storing data, including Read Only Memory (ROM), random Access Memory (RAM), magnetic RAM, core memory, magnetic disk storage media, optical storage media, flash memory devices, and/or other machine-readable media for storing information. The term "machine-readable medium" includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program instructions or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium. The processing unit may perform the necessary tasks. The processing unit may be a CPU, ASIC semiconductor chip, logic unit, digital processor, analog processor, FPGA, or any processor capable of performing logical and arithmetic functions. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
The network interface may be implemented by a separate electronic component or may be integrated with other electronic components. Depending on the configuration, the network interface may have no network connection or at least one network connection. The network interface is connected to only one accessible network. Thus, there may be more than one network connection carried by the accessible network. The network interface may be an ethernet interface, a frame relay interface, a fiber optic interface, a cable interface, a DSL interface, a token ring interface, a serial bus interface, a Universal Serial Bus (USB) interface, a firewire interface, a Peripheral Component Interconnect (PCI) interface, etc.
Embodiments, or portions thereof, may be embodied in a computer data signal, which may take any suitable form for communication over a transmission medium such that it is readable for execution by a functional device (e.g., a processing unit) to perform the operations described herein. The computer data signal may include any binary digital electronic signal capable of propagating through a transmission medium such as electronic network channels, optical fibers, air, electromagnetic media, radio Frequency (RF) links, etc., and thus the data signal may take the form of an electrical signal, an optical signal, a radio frequency or other wireless communication signal, etc. In some embodiments, the code segments may be downloaded via a computer network, such as the internet, an intranet, a LAN, a MAN, a WAN, a PSTN, a satellite communication system, a cable transmission system, etc.
An access connection may carry one or more protocol data including, but not limited to, transmission Control Protocol (TCP), user Datagram Protocol (UDP), internet Control Message Protocol (ICMP), hypertext transfer protocol (HTTP), post office protocol (POP 3), file Transfer Protocol (FTP), and Internet Message Access Protocol (IMAP). The access connection may be a wired network or a wireless network. The wired access connection may be implemented using ethernet, fiber optic, cable, DSL, frame relay, token ring, serial bus, USB, firewire, PCI, T1, or any material capable of passing information. The wireless access connection may be implemented using infrared, high Speed Packet Access (HSPA), HSPA +, third generation mobile communication technology (3G), fourth generation mobile communication technology (4G), long Term Evolution (LTE), wiMax, ATM, GPRS, EDGE, GSM, CDMA, wiFi, CDMA2000, WCDMA, TD-SCDMA, bluetooth, wiBRO, or any other wireless technology.
A logical connection may be made at layer 2 or layer 3 of the Open Systems Interconnection (OSI) model, which connects two endpoints via a public, private, or hybrid public and private network to form a connection. A Virtual Private Network (VPN) is an example of a logical connectivity model. The VPN can be a layer 2 VPN or a layer 3 VPN. The logical connection may also be established using a connection-oriented communication protocol, such as the Transmission Control Protocol (TCP). A logical connection may be referred to as an end-to-end connection because it forms a connection between two endpoints.
Fig. 10 includes a flow diagram illustrating a process for transmitting data packets by communication devices (e.g., communication device 106, communication device 108, router, computer, and internet of things (IoT) device) in accordance with some embodiments. The flow diagrams may represent routines or program instructions stored in a memory device, such as main memory 202 and/or secondary storage 204, or another storage device within the communication device (not shown). The processing unit 201 may be configured to execute routines or program instructions.
The process uses the first evaluation packet to determine a connection that meets the selected connection criteria. For ease of reading, the criteria for selecting a connection is called Connection Selection Criteria (CSC). One example of a CSC is the lowest latency connection. Connections that satisfy the CSC will be used to send packets. The connection selected according to the CSC is called Selected Connection (SC). The connection may be a WAN network interface, an access connection, a logical connection, an end-to-end connection, or an aggregated end-to-end connection for transporting data packets.
For ease of reading, the communication device 106 is used to describe the flow chart. There is no limitation that only communication device 106 may be used for the process. In step 1001, the communication device 106 determines the number of connections it can transmit packets. At step 1002, the communication device 106 detects a new data session destined for a host or device in the network 110. One technique for detecting a new data session is to examine the session identification in the received data packets. For example, the unique session identification is a session identifier stored in the header of the IP packet. In another example, the session identifier is stored in the payload of the IP packet. In another example, the TCP packet does not include a session identifier, and the session is identified by using the sender's address, the sender's port number, the destination's address, and the destination's port. In another example, deep Packet Inspection (DPI) is performed in order to identify the data session. The signature database for performing DPI may be provided by the manufacturer of communication device 106, by an administrator of communication device 106, received from a computing device located in a LAN area of communication device 106, or received from a remote server.
The session identifier becomes one of Matching Conditions (MC) of the communication device 106. It is not limited that only the session identifier may be the MC. For example, in the case of DPI, the selected signature may be one of the MCs.
Referring to fig. 13 in conjunction with fig. 10, a packet 1301 is a first packet of a data session received from a transmitting device connected to a LAN interface of the communication device 106. The data packet 1301 may also be the first data packet of a data session generated by the communication device 106. The data packet 1301 holds the information data-1 in its payload. At time rt-0, packet 1301 is received or generated, and at time rt-1, packet 1301 is completely received or generated by communication device 106. The communication device 106 acts as a gateway for the sending device and may form other network functions such as Network Address Translation (NAT) and routing.
At step 1003, one or more first evaluation packages are created. The number of first evaluation packets created is based on the number of possible connections determined in step 1001. For example, if there are five possible connections, five first evaluation packages are created. In one variant, the number of first evaluation packets is less than the number of possible connections, because not all possible connections will be used to send the first evaluation packets in step 1004.
When the communication device 106 is acting as a gateway for the sending device, the payload of the first data packet of the data session detected at step 1002 will then be copied to the payload of the first evaluation packet. The destination address and destination port number of the first evaluation packet will also be the same as the destination address and destination port number of the first data packet. For purposes of illustration, there are three possible connections. Thus, three first evaluation packages 1311a-1311c are created. The first evaluation packets 1311a-1311c hold the same information data-1 in their respective payloads.
At step 1004, first evaluation packets 1311a-1311c are transmitted over respective connections. For example, the first evaluation packets 1311a-1311c are transmitted over the first connection, the second connection and the third connection, respectively. Time st-0 is the time at which transmission of the first evaluation packets 1311a-1311c begins. For illustrative purposes, the first evaluation packets 1311a, 1311b and 1311c are completely transmitted over the first connection, the second connection and the third connection at times st-1a, st-1b and st-1c, respectively. In addition, for illustrative purposes, the times st-1a, st-1b, and st-1c are 100 milliseconds, and 150 milliseconds, respectively.
At step 1005, the latency of the connections, e.g., the first connection, the second connection, and the third connection, is determined. One of the techniques for evaluating the delay is to measure the corresponding arrival time of the acknowledgment packets. For example, the communication device 106 receives an acknowledgement for the first evaluation packet 1311a approximately 500 milliseconds after st-a1, receives an acknowledgement for the first evaluation packet 1311b approximately 10 milliseconds after time st-1b, and does not receive an acknowledgement for the first evaluation packet 1311c. Of all the acknowledgements, the acknowledgement for the first evaluation packet 1311b is received by the communication device 106 first, and thus the processing unit of the communication device 106 determines that the connection 1310b has the lowest latency.
The acknowledgement may consist of one or more data packets. When there are multiple acknowledgements corresponding to the first evaluation packet received by the communication device 106, only one acknowledgement is forwarded to the sending device. Other acknowledgements will be discarded. One of the reasons for discarding other acknowledgements is: typically, multiple acknowledgements are not expected by the device or by an application running in the sending device that generates the first data packet of the data session. If multiple acknowledgements are forwarded to the sending device, the sending device or application may be confused or may cause errors.
Since connection 1310b has the lowest latency, the processing unit of communication device 106 selects connection 1310b as SC in step 1006 and transmits the content, e.g., data-2, data-3, and data-4, of the other data packets, e.g., packets 1032, 1303, and 1304, of the data session over connection 1310b in step 1007. Thus, packets 1312-1314 containing data-2, data-3 and data-4, respectively, will be transmitted over connection 1310 b.
In a more detailed example, the data session is a secure data session. Typically, the first data packet or first few data packets do not contain authentication information in order to establish a secure connection between a sending device connected to the LAN interface of the communication device 106 or the communication device 106 itself and a receiving device at the other end of the secure connection. Therefore, by creating a plurality of first evaluation packets using the first data packet, in general, the receiving apparatus should not be confused by the first evaluation packets. When receiving multiple first evaluation packets, more computing and network resources may be consumed at the receiving device than when receiving only one first evaluation packet.
In one variant, the first evaluation package is not created based on information contained in the first data package of the data session. Instead, the first evaluation package contains predefined information or randomly created data. Once the connection is selected as the SC for the data session in step 1006, the first and other packets of the data session will be transmitted through the SC.
In one variation, the CSC selected at step 1006 is based substantially on the bandwidth availability of each possible connection. Steps 1003 to 1005 will also be modified to detect bandwidth availability. One skilled in the art will appreciate that there are myriad ways to assess bandwidth availability in a connection, such as using the results of speedtest. In one variation, bandwidth availability is measured between the communication device 106 and the first destination. Those skilled in the art will appreciate that there are myriad ways to assess bandwidth availability between the communication device 106 and the first destination, such as using Bing, which is a point-to-point bandwidth measurement tool in Linux.
There is no restriction that only the CSC is unique to latency and bandwidth availability. The CSC may be one or a combination of latency, bandwidth availability, number of sessions, hop count, other network performance information, tariffs, time and geographical information.
It is not limited that the processing unit of communication device 106 will perform steps 1001-1007 on all packets and/or all data sessions originating from its LAN. In one example, only step 1002 is performed, a new data session is detected, and the data session satisfies the MC. Other MC examples include: the data packets are derived from a particular IP address. In another example, the destination port number of the packet is a specific port number; and DPI results.
Fig. 11 shows a Graphical User Interface (GUI) 1101 in which the user or administrator of the communication device 106 selects one or more data sessions to use the SC in step 1006.
Drop down box 1102 allows a user or administrator to create or select an MC. Block 1103 allows a user or administrator to select a CSC. For example, the address of the particular computing device is the MC in pulldown box 1102, and the CSC will transmit the packet from the particular computing device using the WAN with the largest bandwidth. In another example, a data packet from a gaming laptop and designated for one or more network nodes having a particular domain name identification will be transmitted over the WAN with the lowest latency. Thus, the MC is a combination of the source address of the gaming notebook and the domain name entered in the drop-down box 1102. When the lowest latency check box is checked in block 1103, the CSC becomes the connection with the lowest latency.
In one variation, the communication device 106 retrieves one or more MCs from one or more remote servers. The MC has a naming convention associated with the application. For example, "Game Hero" is designated as the name of MC and is used to indicate the MC of the packet associated with Game Hero. The packets associated with the Game Hero are then sent to the selected connection with the minimum jitter among all connections. The signature of the data session related to the destination of the remote host of the Game Hero will be used to identify the data session by the communication device 106. For example, game Hero uses five servers. The port numbers and destination addresses of these five servers will be used as MC by the communication device 106.
In one variation, the GUI 1101 is similar to setting outbound rules at a firewall. Drop down box 1102 may be any input field that allows a user or administrator to enter an MC. Unlike the actions in the outbound rules, block 1103 is an input CSC.
FIG. 12 shows a GUI 1201 where a user selects an MC in block 1202 and selects a WAN in block 1203 for a particular type of packet matching the MC selected in block 1202. The GUI 1201 is generated by software running inside a computing device, such as a computer, cell phone, or IoT device. The computing device may also be a transmitting device. For ease of reading, the software is referred to herein as Connection Selection Software (CSS). In one example, the user requires that the MC be application B in the computing device and be the lowest latency CSC for selecting the WAN of the communication device 106. Thus, the check box next to "application B" in the drop-down box 1202 and "lowest latency" in 1203 are checked, respectively. All packets created by application B will satisfy MC. The CSC is transmitted from the CSS to the communication device 106.
In another example, when a third check box to input a destination address is checked in block 1202 and a fourth check box to input a destination port number is checked in block 1202, MC is set to the combination of the destination address and the destination port number. Packets matching the MC will be sent over the WAN selected according to the CSC set in block 1203.
In one particular detailed example, the application names in block 1202, such as application A and application B, are entered by a user or administrator of the computing device. Alternatively, the application name is detected by the CSS.
In one variation, there is no block 1203, and only an application may be selected in block 1202. Thus, the user selects only the application. The selected application will then be transmitted over the default selected connection. In one example, the default selected connection is the WAN with the lowest latency at the communication device 106. It is not restricted that the default selected connection must be the connection with the lowest latency. For example, a developer of a CSS may set that the default selected connection must be the connection with the least number of hops to the destination.
Fig. 14 is a flow diagram illustrating a process for processing and transmitting data packets according to some embodiments. The CSS operates in a computing device, such as a gaming laptop and a camera embedded with a temperature sensor. In one example, for purposes of illustration, the computing device is a game laptop and runs racing games and other applications, and is connected to the LAN interface of the communication device 106. The communication device 106 may not be directly connected to the computing device but perform as a gateway for the computing device. The computing device is also a transmitting device. The user creates the MC through a graphical interface such as GUI 1201 or command line instructions. For example, the MC is based on application a, i.e. a racing game. From then on, the CSS will process the data packets generated by the racing game.
At step 1401, the CSS detects a data packet generated by a racing game, which is the selected application. The CSS intercepts packets prior to their transmission. The CSS then compiles or modifies the Differentiated Services Code Point (DSCP) values in the data packets to values that the communication device 106 can recognize at step 1402. The value may be a value as long as it complies with a request for comments (RFC) issued by the Internet Engineering Task Force (IETF). For example, the DSCP value may be set to 0x11. The CSS then forwards the packet to the gateway, which is the communication device 106.
The destinations of the data packets generated by the racing game may have the same or different destinations. The data packets may also belong to the same or different sessions. The protocol of the data packets may also be the same or different. In one variation, the CSS does not edit or change the DSCP values in all packets generated by the selected application. Instead, the CSS only edits or changes the DSCP values in certain types of packets generated by the selected application. The user may configure the CSS with respect to the type of packet. The CSS may also select the type of packet according to predefined rules. The predefined rules may be entered by a user, retrieved from a remote server, or created by a CSS developer.
In one variation, the CSS only changes or edits the DSCP value of the first packet of the data session generated by the selected application, as the communication device 106 can only perform MC on the first packet to select a connection. The communication device 106 may not use the DSCP values of other packets of the MC's data session.
In one variation, steps 1401 and 1402 are performed by an operating system of the computing device. In one example, the CSS configures the MC for the operating system by providing the operating system with one or a combination of an application name, a destination address, a port number, and a Uniform Resource Identifier (URI). Thus, the operating system is able to edit the DSCP value. In a more detailed example, for the Windows 8 operating system, the command to create a QoS policy named Backup that matches traffic sent to the 10.1.1.176/28 subnet and mark it with a DSCP value of 40 and is valid only for traffic sent on the network adapter joining the domain is: new-NetQoPoliciy-Name "Backup" -IPdPrefix MatchCondition 10.1.1.176/28-NetProfile Domain-DSCPAP 40.
In a detailed example, only the first packet of a data session that satisfies an MC will have its DSCP value changed or edited by the CSS or operating system. When the DSCP value is used for the communication device 106 to identify the data session, the communication device 106 may then store a signature of the data session, for example, by using a combination of the destination address, destination port, source address, and source port number. Other packets of the data session may not need to have their DSCP values changed or edited by the CSS or operating system. The communication device 106 may still identify the data session by a combination of the destination address, destination port, source address, and source port number of the data packet. Alternatively, some or all of the packets of the data session, except the first packet, will have their DSCP values changed or edited by the CSS or operating system. The communication device 106 may identify the data session by a signature of the data session or by a DSCP value.
At step 1403, the gaming laptop computer sends the data packet to the communication device 106. At step 1404, the processing unit of communications device 1404 will check whether the packet belongs to a new session. When the computing device sends a plurality of data packets at step 1403, the processing unit will check for the first data packet in the plurality of data packets.
If no packet is the first packet of a data session, a connection should have been assigned to the session. If the connection allocated to the session is SC, the SC will be used to transmit data packets after resetting the DSCP value in step 1407. If the connection allocated to the session is not SC, the packet should be sent over the connection already allocated to the session at step 1410 after resetting the DSCP value of the packet. One benefit of resetting the DSCP value is that routers in the next hop are not confused because the routers in the next hop may not be able to understand the DSCP value.
In one variant, if the connection assigned to the session is not a SC, the data packet may be sent over any connection.
If the data packet is the first data packet of the data session, the processing unit will determine if the DSCP value of the first data packet is identifiable at step 1408. If the DSCP value matches one of the values identified by the processing unit, step 1409 is performed. Otherwise, step 1410 will be performed. In one example, DSCP values that may be identified are 0x11, 0x22, and 0x33. At step 1409, the match condition at the communication device 106 is based on DSCP values 0x11, 0x22, and 0x33. The CSC is the lowest latency connection among all possible connections when the first packet matches the matching condition DSCP value 0x11. When the first packet matches the MC DSCP value 0x22, the CSC is the largest amount of bandwidth among all possible connections. The CSC is the maximum signal-to-noise ratio (SNR) among all possible connections when the first packet matches the MC DSCP value 0x33. There is no limitation on the DSCP value. There is also no limitation on CSC. The connection selected according to the CSC is then allocated to the data session, being the SC for the data session. Those skilled in the art will appreciate that the iptable is one of the tools that can allocate connections for data sessions. Step 1407 is then performed.
In one variation, at step 1408, the DPI result is used instead of checking the DSCP value, and the MC in step 1409 is based on the DPI result. This allows the administrator of the communication device 106 to make the determination based on the CSC only. In one variation, at step 1408, the DPI result and the DSCP value are examined, and the MC in step 1409 is based on a combination of the DPI result and the DSCP value. This allows an administrator of the communication device 106 and a user of the computing device to configure the MC together.
Instead, the processing unit executes DPI to determine whether the data session should be the selected session.
In one variation, if no connection is assigned for the data session, or no DSCP value is identified in step 1408, the processing unit of the communication device 106 may not transmit all data packets of the data session using the same connection. The data packets of the data session may be transmitted over different connections.
The CSS is not limited to only allowing the communication device 106 to identify the packet using the DSCP field. Other fields in the packet may be used, such as an options field. In order not to affect the routing and/or forwarding of data packets by other network nodes, the communication device 106 should reset the fields used by the CSS to default values.
In one variation, the transmitting device is capable of transmitting data packets over multiple connections. For example, a gaming laptop computer is the sending device. Gaming notebooks have multiple network interfaces and can use multiple internet connections. The gaming laptop may also be capable of performing the functions of the communication device 106. Thus, the gaming laptop is able to perform all of the processes described in the flowchart of FIG. 12. For example, instructions executed by the processing unit of the gaming laptop can determine whether a packet satisfies the MC, select according to the CSC, and transmit the packet over the selected connection. In one variation, since the same device is generating packets and performing connection selection, there is no need for another device to identify packets that satisfy the MC, and thus there is no need to edit or alter the DSCP value of the packets.

Claims (20)

1. A method for transmitting data packets of a data session over a connection at a network node, comprising the steps of:
a. determining a plurality of connections; wherein the plurality of connections are selected by a user through a graphical user interface;
b. receiving a data packet from a transmitting device through a local area network;
c. when the data packet meets the matching condition:
i. checking whether the data packet belongs to a new data session;
when the packet belongs to a first packet of the new data session:
A. creating a plurality of first evaluation packages; storing, at the network node, information data identical to the first data packet in respective payloads of the plurality of first evaluation packets;
B. sending the plurality of first evaluation packets to a first destination over the plurality of connections;
C. evaluating a latency of the plurality of connections to the first destination;
D. selecting one of the plurality of connections as a selected connection; wherein the selection is based on at least one of: time delay of the first destination, bandwidth, location, tariff of the first destination;
E. transmitting other data packets of the new data session over the selected connection;
when the packet is not a packet of the data session: transmitting the data packet to a receiving device over one of the plurality of connections.
2. The method of claim 1, wherein the matching condition is selected in using the graphical user interface.
3. The method of claim 1, further comprising the steps of:
d. and when the data packet does not meet the matching condition, transmitting the data packet through any connection.
4. The method of claim 1, wherein the step (c) (ii) (B) is performed in a first predefined time; wherein said step (c) (iii) is performed in a second predefined time.
5. The method of claim 2, wherein the matching condition is based on one or more of: a session identifier, an address of the sending device, a port number of the sending device, an address of the receiving device, and a port number of the receiving device.
6. The method of claim 1, wherein the matching condition is based on a DSCP value, and the method further comprises the steps of: resetting the DSCP value prior to performing step (c) (ii) (E) or c (iii).
7. The method of claim 1, wherein the matching condition is based on a Differentiated Services Code Point (DSCP) value.
8. The method of claim 1, wherein the match condition is based on a deep packet inspection result.
9. The method of claim 1, wherein the matching condition is retrieved from one or more remote servers.
10. The method of claim 1, wherein a possible connection comprises at least one aggregated end-to-end connection.
11. A network node, comprising:
at least one network interface;
at least one processing unit;
at least one main memory;
at least one non-transitory computer readable medium storing program instructions executable by the at least one processing unit for:
a. determining a plurality of connections; wherein the plurality of connections are selected by a user through a graphical user interface;
b. receiving a data packet from a transmitting device through a local area network;
c. when the data packet meets a matching condition:
i. checking whether the data packet belongs to a new data session;
when the packet belongs to a first packet of the new data session:
A. creating a plurality of first evaluation packages; storing, at the network node, information data identical to the first data packet in respective payloads of the plurality of first evaluation packets;
B. sending the plurality of first evaluation packets to a first destination over the plurality of connections;
C. evaluating the plurality of latencies of connections to the first destination;
D. selecting one of the plurality of connections as a selected connection; wherein the selection is based on at least one of: time delay of the first destination, bandwidth, location, tariff of the first destination;
E. transmitting other data packets of the new data session over the selected connection;
when the packet is not a packet of the data session: transmitting the data packet to a receiving device over one of the plurality of connections.
12. The network node of claim 11, wherein the matching condition is a selection in using the graphical user interface.
13. The network node of claim 11, wherein the at least one non-transitory computer readable medium further stores program instructions executable by the at least one processing unit for:
d. and when the data packet does not meet the matching condition, transmitting the data packet through any connection.
14. The network node of claim 11, wherein the step (c) (ii) (B) is performed in a first predefined time; wherein said step (c) (iii) is performed in a second predefined time.
15. The network node of claim 12, wherein the matching condition is based on one or more of: a session identifier, an address of the sending device, a port number of the sending device, an address of the receiving device, and a port number of the receiving device.
16. The network node of claim 11, wherein the at least one non-transitory computer readable medium further stores program instructions executable by the at least one processing unit for:
resetting the DSCP value prior to performing step (c) (ii) (E) or c (iii), wherein the match condition is based on the DSCP value.
17. The network node of claim 11, wherein the match condition is based on a Differentiated Services Code Point (DSCP) value.
18. The network node of claim 11, wherein the match condition is based on a deep packet inspection result.
19. The network node of claim 11, wherein the matching condition is retrieved from one or more remote servers.
20. The network node of claim 11, wherein a possible connection comprises at least one aggregated end-to-end connection.
CN201780062035.XA 2014-07-14 2017-09-12 Method and system for evaluating network performance of aggregated connections Active CN109792621B (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
PCT/IB2014/063084 WO2016009250A1 (en) 2014-07-14 2014-07-14 Methods and systems for transmitting data packets
US14/410,099 US9602412B2 (en) 2014-07-14 2014-07-14 Methods and systems for transmitting data packets
US15/462,951 US9876723B2 (en) 2014-12-21 2017-03-20 Methods and systems for evaluating network performance of an aggregated connection
US15/462,951 2017-03-20
PCT/IB2017/055478 WO2018172832A1 (en) 2014-07-14 2017-09-12 Methods and systems for evaluating network performance of an aggregated connection

Publications (2)

Publication Number Publication Date
CN109792621A CN109792621A (en) 2019-05-21
CN109792621B true CN109792621B (en) 2023-02-28

Family

ID=54544582

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201910524047.0A Active CN110337121B (en) 2014-07-14 2014-07-14 Method and system for evaluating network performance of aggregated connections
CN201480079683.2A Active CN106465162B (en) 2014-07-14 2014-07-14 It is used for transmission the method and system of data packet
CN201780062035.XA Active CN109792621B (en) 2014-07-14 2017-09-12 Method and system for evaluating network performance of aggregated connections
CN201780061963.4A Active CN109983737B (en) 2014-07-14 2017-09-12 Method and system for evaluating network performance of aggregated connections

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201910524047.0A Active CN110337121B (en) 2014-07-14 2014-07-14 Method and system for evaluating network performance of aggregated connections
CN201480079683.2A Active CN106465162B (en) 2014-07-14 2014-07-14 It is used for transmission the method and system of data packet

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201780061963.4A Active CN109983737B (en) 2014-07-14 2017-09-12 Method and system for evaluating network performance of aggregated connections

Country Status (4)

Country Link
US (1) US9602412B2 (en)
CN (4) CN110337121B (en)
GB (1) GB2534259B (en)
WO (3) WO2016009250A1 (en)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10805219B2 (en) * 2014-07-14 2020-10-13 Pismo Labs Technology Limited Methods and systems for evaluating network performance of an aggregated connection
US9602412B2 (en) * 2014-07-14 2017-03-21 Pismo Labs Technology Limited Methods and systems for transmitting data packets
GB2579759B (en) * 2014-07-14 2022-07-13 Pismo Labs Technology Ltd Methods and systems for evaluating network performance of an aggregated connection
US10084675B2 (en) * 2016-04-07 2018-09-25 International Business Machines Corporation Monitoring connections for data communications
US10069897B2 (en) * 2016-04-08 2018-09-04 Verizon Patent And Licensing Inc. Increasing an efficiency of a file transfer by using multiple communication resources
US10084678B2 (en) 2016-04-19 2018-09-25 International Business Machines Corporation Managing connections for data communications using heartbeat messaging
CN109565471A (en) * 2016-06-18 2019-04-02 科里维网络有限公司 High performance intelligent adaptive transport layer is proposed using multichannel
US10827001B2 (en) 2016-07-27 2020-11-03 International Business Machines Corporation Managing connections for data communications
GB2575228B (en) * 2017-03-20 2022-07-06 Pismo Labs Technology Ltd Methods and systems for evaluating network performance of an aggregated connection
US10809134B2 (en) 2017-05-24 2020-10-20 Cisco Technology, Inc. Thermal modeling for cables transmitting data and power
US11054457B2 (en) 2017-05-24 2021-07-06 Cisco Technology, Inc. Safety monitoring for cables transmitting data and power
US10828716B2 (en) 2017-06-19 2020-11-10 Lincoln Global, Inc. Systems and methods for real time, long distance, remote welding
US10742747B2 (en) 2017-07-06 2020-08-11 International Business Machines Corporation Managing connections for data communications following socket failure
CN109818863B (en) 2017-11-22 2021-11-19 华为技术有限公司 Link priority setting method and device
WO2019102257A1 (en) * 2017-11-27 2019-05-31 Pismo Labs Technology Limited Methods and systems for transmitting and receiving data packets through a bonded connection
US11671362B2 (en) 2021-05-13 2023-06-06 Microsoft Technology Licensing, Llc Managing data traffic for two simultaneous VPN connections with a VPN client
US11683293B2 (en) * 2021-05-13 2023-06-20 Microsoft Technology Licensing, Llc Creating two simultaneous VPN connections for a VPN client
CN114615205B (en) * 2022-03-23 2024-03-08 南京航空航天大学 Mixed flow scheduling method under time sensitive network based on time benefit function

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101360045A (en) * 2007-07-30 2009-02-04 佳能株式会社 Method for the transmission of data packets in a tunnel storage means and tunnel end-point
EP2615776A1 (en) * 2007-08-31 2013-07-17 Fisher-Rosemount Systems, Inc. Configuring and Optimizing a Wireless Mesh Network
CN106416137A (en) * 2013-10-16 2017-02-15 柏思科技有限公司 Methods and systems for displaying network performance information
CN106465162A (en) * 2014-07-14 2017-02-22 柏思科技有限公司 Methods and systems for transmitting data packets

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3654158B2 (en) * 2000-08-09 2005-06-02 日本電気株式会社 Packet transfer path control apparatus and packet transfer path control method used therefor
JP5138847B2 (en) * 2001-08-31 2013-02-06 富士通株式会社 Network system, network relay device, network relay monitoring device, and network operation method
US7668966B2 (en) * 2001-11-02 2010-02-23 Internap Network Services Corporation Data network controller
US8660108B2 (en) * 2007-04-13 2014-02-25 Hart Communication Foundation Synchronizing timeslots in a wireless communication protocol
US8189577B2 (en) * 2007-06-15 2012-05-29 Silver Spring Networks, Inc. Network utilities in wireless mesh communications networks
DE102008030939A1 (en) * 2008-07-02 2010-01-07 Deutsche Thomson Ohg Method and device for managing data transmission in a network
CN101635663B (en) * 2008-07-21 2012-06-27 华为技术有限公司 Data transmission method, data transmission system and network equipment
CN101729589B (en) * 2008-10-14 2012-07-18 北京大学 Method and system for improving end-to-end data transmission rate
US9264307B2 (en) * 2008-11-12 2016-02-16 Teloip Inc. System, apparatus and method for providing improved performance of aggregated/bonded network connections between remote sites
CN101656637B (en) 2009-09-11 2012-06-13 中国科学院计算技术研究所 Virtual trunk measuring device and method for network protocol
CN101719864B (en) * 2009-11-27 2011-12-07 深圳市共进电子有限公司 Method for transmitting and distributing data of router with double network ports
CN201616094U (en) * 2010-02-11 2010-10-27 北京爱国者存储科技有限责任公司 Host device with multiple connectors and protocol selection device
US9253015B2 (en) * 2010-07-09 2016-02-02 Attila Technologies, Llc Transparent proxy architecture for multi-path data connections
AU2011293804B2 (en) * 2010-08-24 2016-08-11 Exxonmobil Upstream Research Company System and method for planning a well path
EP2437434A1 (en) * 2010-09-30 2012-04-04 British Telecommunications Public Limited Company Monitoring of data traffic based on user profiles
US8654869B2 (en) * 2011-10-27 2014-02-18 Cooper Technologies Company Multi-path radio transmission input/output devices, network, systems and methods with link suitability determination
GB2514060B (en) * 2012-10-25 2020-12-16 Pismo Labs Technology Ltd A method, device and system to prioritize encapsulating packets in a plurality of logical network connections
CN108737262B (en) * 2013-07-05 2022-01-21 柏思科技有限公司 Method for transmitting data packet and communication router
CN103428770B (en) * 2013-07-30 2016-03-09 北京邮电大学 Flow allocation method in the multi-link parallel transmission of heterogeneous wireless network
CN105453499B (en) * 2013-08-02 2017-06-30 特洛伊普公司 System, the apparatus and method of the improvement performance of the polymerization/combination network connection between for providing remote site
US9876723B2 (en) * 2014-12-21 2018-01-23 Pismo Labs Technology Limited Methods and systems for evaluating network performance of an aggregated connection
CN104104548B (en) * 2014-08-01 2018-10-26 哈尔滨工程大学 A kind of network safety situation Information Acquisition System and method based on SFLOW and OWAMP

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101360045A (en) * 2007-07-30 2009-02-04 佳能株式会社 Method for the transmission of data packets in a tunnel storage means and tunnel end-point
EP2615776A1 (en) * 2007-08-31 2013-07-17 Fisher-Rosemount Systems, Inc. Configuring and Optimizing a Wireless Mesh Network
CN106416137A (en) * 2013-10-16 2017-02-15 柏思科技有限公司 Methods and systems for displaying network performance information
CN106465162A (en) * 2014-07-14 2017-02-22 柏思科技有限公司 Methods and systems for transmitting data packets

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ad Hoc网络链路质量QoS多路径按需路由协议;王庆文;《计算机工程与应用》;20110127;全文 *

Also Published As

Publication number Publication date
US9602412B2 (en) 2017-03-21
CN106465162A (en) 2017-02-22
CN109792621A (en) 2019-05-21
CN110337121A (en) 2019-10-15
CN110337121B (en) 2023-03-24
CN106465162B (en) 2019-07-12
GB2534259B (en) 2021-04-21
CN109983737A (en) 2019-07-05
GB201516722D0 (en) 2015-11-04
WO2018172832A1 (en) 2018-09-27
US20160261504A1 (en) 2016-09-08
CN109983737B (en) 2022-01-21
WO2016009250A1 (en) 2016-01-21
WO2018172833A1 (en) 2018-09-27
GB2534259A (en) 2016-07-20

Similar Documents

Publication Publication Date Title
CN109792621B (en) Method and system for evaluating network performance of aggregated connections
US10511522B2 (en) Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection
EP3654589B1 (en) Predicting application quality of experience metrics using adaptive machine learned probes
CN111682952B (en) On-demand probing for quality of experience metrics
US10958555B2 (en) Real-time application-driven synthetic probing
EP3278514B1 (en) Data transmission
US9350672B2 (en) Performance enhancement and congestion control of multipath protocol packets in a heterogeneous network environment with multipath transport protocols
EP3709573A1 (en) Satisfying service level agreement metrics for unknown applications
US9634945B2 (en) Apparatus and method for staged traffic classification among terminal and aggregation nodes of a broadband communications system
JP2020502948A (en) Packet transmission system and method
US11096109B2 (en) Methods and network elements for multi-connectivity control
US20170063699A1 (en) Method and apparatus for configuring multi-paths using segment list
US8788640B1 (en) Employing rate shaping class capacities and metrics to balance connections
US11722391B2 (en) Dynamic prediction and management of application service level agreements
EP3281380B1 (en) Method and system for the scheduling of packets in a bundling scenario based on tcp tunnels and native tcp information
EP3125472A1 (en) Telecommunication system, method and computer readable medium to control how a transmission of packets of a data flow is realized
Heuschkel et al. VirtualStack: Adaptive Multipath Support through Protocol Stack Virtualization.
US20190190835A1 (en) Methods and systems for evaluating network peformance of an aggregated connection
US10805219B2 (en) Methods and systems for evaluating network performance of an aggregated connection
Fressancourt et al. A dynamic offer/answer mechanism encompassing TCP variants in heterogeneous environments

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010631

Country of ref document: HK

CB02 Change of applicant information

Address after: Room A8, 5th floor, phase 6, Hong Kong yarn factory industrial building, 481 Castle Peak Road, Cheung Sha Wan, Kowloon, China

Applicant after: PISMO LABS TECHNOLOGY Ltd.

Address before: Chinese Hongkong Kowloon Bay Changsha Castle Peak Road No. 481 Hongkong mills Arts crafts emporium 6 floor A5 room 5

Applicant before: PISMO LABS TECHNOLOGY Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant