Movatterモバイル変換


[0]ホーム

URL:


US10511522B2 - Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection - Google Patents

Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection
Download PDF

Info

Publication number
US10511522B2
US10511522B2US15/877,258US201815877258AUS10511522B2US 10511522 B2US10511522 B2US 10511522B2US 201815877258 AUS201815877258 AUS 201815877258AUS 10511522 B2US10511522 B2US 10511522B2
Authority
US
United States
Prior art keywords
connections
connection
data
packets
data packets
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
US15/877,258
Other versions
US20180316606A1 (en
Inventor
Patrick Ho Wai Sung
Wan Chun Leung
Kit Wai Chau
Kam Chiu NG
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 PCT/IB2014/063084external-prioritypatent/WO2016009250A1/en
Application filed by Pismo Labs Technology LtdfiledCriticalPismo Labs Technology Ltd
Priority to US15/877,258priorityCriticalpatent/US10511522B2/en
Assigned to PISMO LABS TECHNOLOGY LIMITEDreassignmentPISMO LABS TECHNOLOGY LIMITEDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: LEUNG, Wan Chun, NG, Kam Chiu, SUNG, Patrick Ho Wai, CHAU, Kit Wai
Publication of US20180316606A1publicationCriticalpatent/US20180316606A1/en
Application grantedgrantedCritical
Publication of US10511522B2publicationCriticalpatent/US10511522B2/en
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

The present invention discloses a method carried out by a first communications device for determining performance of a plurality of connections and selecting at least one first connection from the plurality of connections substantially based on performance. Data packets are then transmitted through the at least one first connection. The plurality of connections are aggregated to form an aggregated connection. The determining of performance is performed by transmitting evaluation packets through the plurality of connections. The evaluation packets are based on data packets that are received by the first communication device but have not yet been transmitted through the aggregated connection. The data packets may be designated for a host or node reachable through the aggregated connection. Alternatively, the evaluation packets may be based on predefined information when there are no data packets to be transmitted through the aggregated connection. The performance may be determined periodically.

Description

RELATED APPLICATIONS
The present application is a Non-provisional Continuation Application which claims the benefits of and is based on Non-provisional application, Ser. No 15/462,951 filed on 20 Mar. 2017, which claims the benefits of and is based on Non-provisional application Ser. No. 14/410,099 filed on 21 Dec. 2014, and which claims the benefits of and is based on PCT Application No. PCT/IB2014/063084 titled ‘METHODS AND SYSTEMS FOR TRANSMITTING DATA PACKETS’ filed on 14 Jul. 2014, the disclosures of which are hereby incorporated, in their entirety, by these references.
TECHNICAL FIELD
The present invention relates in general to the field of computer networks. More particularly, the present invention relates to methods and systems for determining performance of a plurality of connections periodically by transmitting evaluation packets through the plurality of connections. One or more connections are selected for transmitting data packets, based on, at least in part, the performance. Data packets are transmitted through at least one of the one or more connections.
BACKGROUND ART
A multi Wide Area Network (WAN) communications device is able to transmit data packets using one or more of its WAN interfaces. The communications device also supports aggregating the bandwidth of multiple WAN interfaces. The communications device also supports end-to-end connections, such as virtual private network (VPN) connection and session based site-to-site (VPN) connection and tunneling. In some implementations, 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 implementation, M×N tunnels are initially formed between the WAN connections where M and N are the number of WAN network connections of site A and site B, respectively. Application TCP/IP sessions are then routed over the different tunnels. It is notable, however, that while a session based site-to-site VPN is able to utilize different tunnels for different sessions, a single download session in this type of connection is only able to utilize one tunnel.
When a communications device transmits data packets, the communications device needs to select the most suitable WAN network interface, access connection, logical connection or end-to-end connection to transmit data packets. However, it takes time to identify which of the WAN network interfaces, access connection, logical connections or end-to-end connections is the most suitable. The most suitable WAN network interface, access connection, logical connection or end-to-end connection to transmit data packets should be the one that may transmit data packets the quickest or according to a set of performance criteria. Furthermore, when a communications device establishes a plurality of end-to-end connections belonging to an aggregated end-to-end connection, it is important to choose the end-to-end connections with best performance to transmit data packets, so that the overall performance of the aggregate end-to-end connection is satisfactory, and is not affected negatively by transmitting data packets through established end-to-end connections that have poor performance.
However, it is well known that performance of end-to-end connections may vary from time to time. Therefore, it is desirable that the performance of the end-to-end connections is re-determined periodically in order to check which end-to-end connection(s) have the best performance at a given time. It is also important that the performance of the established end-to-end connections is re-determined using data packets containing same information so that a fair comparison may be made between the established end-to-end connections based on their performances.
DISCLOSURE OF INVENTIONSummary of Invention
The present invention discloses a method carried out by a first communications device for determining performance of a plurality of connections and selecting at least one first connection from the plurality of connections substantially based on performance. Data packets are then transmitted through the at least one first connection. The plurality of connections may be aggregated to form an aggregated connection. The determining of performance is performed by transmitting evaluation packets through the plurality of connections. The evaluation packets are based on data packets that are received by the first communication device but have not yet been transmitted through the aggregated connection. The data packets may be designated for a host or node reachable through the aggregated connection. Alternatively, the evaluation packets may be based on predefined information when there are no data packets to be transmitted through the aggregated connection. The determining of performance may be performed periodically. Data packets may be transmitted using load balancing when there is more than one first connection.
According to one of the embodiments of the present invention, each connection of the at least one first connection is classified into at least two groups. At least one of the at least two groups is preferred for transmitting a first type of data packets, whereas another at least one of the at least two groups is preferred for transmitting a second type of data packets.
According to one of the embodiments of the present invention, the evaluation packets have the same or substantially the same size. The evaluation packets may also have the same or substantially the same information.
According to one of the embodiments of the present invention, the performance is substantially based on latency. The at least one first connection is further based on corresponding latency requirement of the data packets. The corresponding latency requirement of the data packets may be determined according to the contents of the data packets. In one variant, when the latency of a connection is determined to be higher than about 1000 milliseconds, the connection is not selected as one of the at least one first connection. When the latency of a second connection is more than about 800 milliseconds, the second connection is not used for data packets containing near real time video data or near real-time voice communication. When the latency of a third connection is more than about 500 milliseconds, the third connection is not used for near real-time voice communication. The second connection and the third connection are comprised in the at least one first connection.
The present invention further discloses a method for transmitting data packets at a first communications device through an aggregated connection by first determining latency of a plurality of connections comprised in the aggregated connection. The difference in latency of the plurality of connections is determined and it is determined whether the difference in latency is higher than a latency discrepancy threshold. If the difference in latency is higher than the latency discrepancy threshold, at least one first connection with highest latency is not used for transmitting data packets. At least one second connection with comparatively low latency is used to transmit data packets instead. The plurality of connections is consisted of the at least one first connection and/or the at least one second connection. In one variant, the at least one first connection is established using third generation of mobile telecommunications technology (3G), and the at least one second connection is established using fourth generation of mobile telecommunications technology (4G) or wired Ethernet. In one variant, when the aggregated connection only comprises at least one first connection established using 3G, the at least one first connection is used for transmitting data packets.
BRIEF DESCRIPTION OF DRAWINGS
FIG. 1A illustrates a network environment according to various embodiments of the present invention.
FIG. 1B illustrates a network environment according to one of the embodiments of the present invention.
FIG. 1C illustrates a network environment according to one of the embodiments of the present invention.
FIG. 2 is an illustrative block diagram of a communication device according to one of the embodiments of the present invention.
FIG. 3A illustrates timing graphs according to one of the embodiments of the present invention.
FIG. 3B illustrates timing graphs according to one of the embodiments of the present invention.
FIG. 4 illustrates timing graphs in which only one connection is used for transmitting data packets according to one of the embodiments of the present invention.
FIG. 5 illustrates timing graphs in which more than one connections are used for transmitting data packets according to one of the embodiments of the present invention.
FIG. 6 illustrates timing graphs representing transmission of evaluation packets and data packets according to one of the embodiments of the present invention.
FIG. 7 illustrates timing graphs representing transmission of evaluation packets and data packets according to one of the embodiments of the present invention.
FIG. 8A is a flowchart illustrating a process according to one of the embodiments of the present invention.
FIG. 8B is a flowchart illustrating a process according to one of the embodiments of the present invention.
FIG. 9 is a flowchart illustrating a process according to one of the embodiments of the present invention.
DETAILED DESCRIPTION
FIG. 1A illustrates system101 showing a network environment according to one of the embodiments of the present invention. System101 includesmultiple sites102 and104, which each comprise at least onecommunications device106 and108.Communications devices106 and108 are connected overnetwork110.Network110 may comprise a local area network (LAN), metropolitan area network (MAN), wide area network (WAN), wireless network, the public switched telephone network (PSTN), the Internet, an intranet, an extranet, etc.
Site102 andcommunications device106 may compriseM connections112, andsite104 andcommunications device108 may compriseN connections114.Connections112 and114 are access connections for communicating information withinnetwork110 betweensites102 and104. In the illustrated embodiment, M is equal to 3 and N is equal to 2; however, these values may vary according to desired devices and configurations.Connections112 and114 may have similar or differing bandwidth capabilities. Further,connections112 and114 may comprise different types of WAN connections, such as a WiFi, cable, DSL, TI, 3G, 4G, LTE, satellite connections, and the like. It is also noted thatsite102 andsite104 may be thought of as both a sender or receiver, and discussions regarding the functionality of either site may be implemented on the other site. In other words,system100 may be implemented as a symmetrical network.
FIG. 1B illustrates a network environment according to one of the embodiments of the present invention.Logical connections103A,103B and103C connectcommunications device106 tocommunications device108. In one variant,logical connections103A,103B and103C are end-to-end connections that are bonded to form an aggregated end-to-end connection. In one variant,logical connections103A,103B and103C are classified into different groups of connections and data is transmitted through the connections based, at least in part, on the groups the connections are classified into.
Communications devices106 and108 have a plurality of network interfaces according to one of the embodiments.Communications device106 establisheslogical connections103A,103B, and103C via one or more of its plurality of network interfaces with one or more network interfaces ofcommunications device108.
Communication device106 and108 may work as a gateway, a router, a switch, an access point, a hub, a bridge, etc.
FIG. 1C illustratessystem100 adapted according to embodiments configured to optimize the throughput of bonded multiple variable bandwidth connections by adjusting a tunnel bandwidth weighting schema during a data session.System100 is similar to system101, with the exception of M×Nvirtual tunnels116. When establishing a bonded connection betweensites102 and104, such as by implementing a bonded site-to-site VPN connection, M×Nvirtual tunnels116 may be created.Virtual tunnels116 correspond to a unique permutation of the network connections ofsite102 and the network connections ofsite104. An aggregated end-to-end connection is formed betweencommunications devices106 and108.Connections112 and114 are embodied as logical connections.
FIG. 2 is an illustrative block diagram of a communications device, such ascommunications device106, according to one of the embodiments of the present invention.Communications device106 comprises processingunit201,main memory202,system bus203,secondary storage204, and plurality of network interfaces205.Processing unit201 andmain memory202 are connected to each other directly.System bus203 connects processingunit201 directly or indirectly tosecondary storage204, and plurality of network interfaces205. Usingsystem bus203 allowscommunications device106 to have increased modularity.System bus203couples processing unit201 tosecondary storage204, and plurality of network interfaces205.System bus203 can 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.Secondary storage204 stores program instructions for execution by processingunit201.Secondary storage204 further stores conditions, wherein classification of connections into different groups depends on whether or not the connections satisfy the conditions.Secondary storage204 also stores predefined time periods for transmitting data packets for determining performance of connections and data packets belonging to a data session respectively.
One ormore network interfaces205 are connected to corresponding access connections.Communications device106 uses one or more access connections to connect to one or more public networks and/or private networks as illustrated inFIG. 1A. In one variant, one or more connections may be established using an access connection to connectcommunications device106 with another network node, such ascommunications device108, or network host, as illustrated inFIG. 1B andFIG. 1C.
FIG. 3A illustrates timing graphs representing the transmission of evaluation packets and data packets through connections at a communications device, such ascommunications device106 according to one of the embodiments.FIG. 3A is viewed in conjunction withFIG. 2 for better understanding. Timinggraphs301,302 and303 represent transmission through a first, second and third connection respectively. The horizontal axis represents time.Communications device106 connects to the first, second and third connections through at least one of the plurality of network interfaces205. Time instances are represented by t-0, t-1, t-6, t-7, t-2, t-3, t-4 and t-5.
For illustration purpose,evaluation packets311a,311band311care transmitted through the first, second and third connections at t-0 or substantially the same time respectively in order to determine performance of the first, second and third connections. At about t-1,communications device106 has already transmittedevaluation packets311aand311bthrough the first connection and the second connection respectively, and has received the acknowledgement fromcommunications device108. However,communications device106 has not completed the transmitting ofevaluation packet311c.The difference in the amount of time required to transmit evaluation packets may be due to myriad reasons, including network performance of a connection. Also, at about t-1, processingunit201 has determined the first connection has the best network performance after it has completely transmittedevaluation packet311a,It is well known to those skilled in the arts that there are myriad ways to determine network performance based on evaluation packets. For clarification, the present invention is not restricted to haveprocessing unit201 to make the network performance decision at about the same time after completely transmittingevaluation packet311a.Performance may be determined based on transmission of the evaluation packets and the receipt of the acknowledgement. Performance may further be determined based on receipt of data packets fromcommunications device108.
Onceprocessing unit201 has determined that the first connection has the best performance, processingunit201 selects the first connection to transmitdata packets312.Data packets312 contain data represented by data-2. Data-2 may belong to one data stream, a plurality of data streams or data belonging to no stream. The length of data-2 may vary.Data packets312 may have different sizes and may comprise one or more data packets. For example,data packets312 may be Internet Protocol (IP) packets.
In another illustration, at about t-2, processingunit201 re-starts the process to determine performance of the first second and third connections again. At about t-3, processingunit201 has determined that the second connection has the best performance and as a result selecting the second connection to transmitdata packets314.
In one variant,evaluation packets311,313 and315 are transmitted in order to select a network interface for transmitting data packets. For example, the plurality of network interfaces206 comprises a first, second and third network interface. Evaluation packets are transmitted through the first, second and third network interfaces for determining which network interface is associated with a connection with the best performance. For illustration purpose, when the first network interface is determined to be associated with the connection with the best performance, data packets are transmitted through the connection(s) associated with the first network interface. The connections may be access connections or logical connections.
According to one of the embodiments of the present invention, evaluation packets that are transmitted at about the same time contain the same or substantially the same information. For example,evaluation packets311a,311band311ccontain the same or substantially the same information data-1. Similarly,evaluation packets313a,313band313ccontain the same or substantially the same information data-3. Similarly,evaluation packets315a,315band315ccontain the same or substantially the same information data-5.Evaluation packets311,313 and315 are all transmitted in order to determine performance of the connections.
When using the same or substantially the same information, processingunit201 does not need to generate different information for the evaluation packets. This may reduce the amount of computing resources required. In addition, the performance of the connections can be compared more accurately as the length and contents 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 illustration purpose, data-1 contained inevaluation packets311a,311band311c,data-2 contained indata packets312, data-3 contained inevaluation packets313a,313band313c,data-4 contained indata packets314 and data-5 contained inevaluation packets315a,315band315cbelong to the same data session. Therefore, the evaluation packets are data packets belonging to the data session. The benefit of using evaluation packets belonging to a data session to determine the performance is that the flow of data transmission is not disrupted, interrupted, or paused significantly when evaluation packets are transmitted. This is important because performance could be evaluated or determined periodically and frequently, and not just at the beginning of the data session. When there is a current data session, and there are data packets to be transmitted, it is preferred to use the data packets as evaluation packets, i.e. evaluate performance of connections based on the transmission of data packets.
In another illustration, a video stream is being transmitted throughcommunications device106 tocommunications device108 using TCP. Data-1 ofevaluation packets311a,311band311cencapsulates data of a first frame of the video. Data-2 ofdata packets312 encapsulates data of a second frame of the video. Data-3 ofevaluation packets313a,313band313care a third frame of the video. Data-4 ofdata packet314 encapsulates data of a fourth frame of the video. Data-5 ofevaluation packets315a,315band315cencapsulates data of a fifth frame of the video. When performance is being determined through the evaluation packets, data of the video stream is still being transmitted. In addition, the video is still being transmitted fromcommunications device106 tocommunications device108 without interruption even when different connections are selected from t-0 to t-5, i.e. when the first connections is selected at about t-1 and the second connection is selected at about t-3.
Another benefit of using evaluation packets belonging to a data session is that real time data is used to determine performance. This makes the performance determination more accurate and relevant.
In one variant,evaluation packets311,313 and315 contain information that is predefined. Although using evaluation packets containing predefined information to determine the performance during a data session may disrupt the flow of data session, the performance determined may be used to compare against historical performance determined. When there is no current data session or the current data session has no data to be transmitted, evaluation packets containing predefined data is more appropriate to be used to determine performance. For example, inFIG. 3A,evaluation packets311,313, and315 contain predefined information. The predefined information inevaluation packets311a,311band311cshould be the same in order to have an accurate performance comparison for the first, second and third connections. Similarly, the predefined information inevaluation packets313a,313band313cshould be the same and the predefined information inevaluation packets315a,315band315cshould also be the same. Therefore in the time periods t-0 to t-1, t-2 to t-3 and t-4 to t-5, the data session is disrupted, interrupted, or paused for transmitting the evaluation packets. In one variant, the predefined information inevaluation packets311,313, and315 is the same. For illustration purpose, when evaluation packets contain predefined information, the interval at which they are transmitted 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 of the embodiments of the present invention, data packets may be regarded as evaluation packets, such that data packets may also be used to determine performance of connections. For example, at about t-3, processingunit201 determines the performance of the first connection based on the successful transmission of data-2 contained indata packets312 and data-3 contained inevaluation packets313a.Processing unit201 determines the performance of the second connection and the third connection using based on the successful transmission of only data-3 contained inevaluation packets313band313crespectively, because no data packets were transmitted through the second and third connection.
According to one of the embodiments of the present invention, size of each evaluation packet may be configured by the user or administrator. In some scenarios, some carriers may give higher priority to packets of smaller size, such that packets of smaller size may be transmitted earlier than packets of larger size. As smaller size packets may be transmitted sooner, it may be beneficial to configure the size of the evaluation packets to be smaller. Therefore the evaluated latency may be closer o the theoretical latency of the connection. If the size of only evaluation packets, and not all data packets, is configured to be small, the latency evaluated may be much lower than the real latency to be experienced when transmitting data packets. Thus the latency evaluated may not accurately represent the performance of the connection. To avoid this, size of all data packets and evaluation packets may be configured to be small.
Alternatively, the size of the evaluation packets and data packets may be configured to be larger. The total overhead may be reduced when the size of each packet is larger, since there are lesser number of packets for a given amount of data. Furthermore, the computing resources required for processing the packets may be reduced as the number of packets may be lesser.
According to one of the embodiments of the present invention, evaluation packets have the same size or substantially the same size. For example,evaluation packets311a,311band311call are consisted of five packets as illustrated inFIG. 3B.Evaluation packets311ais consisted of packets3001-3005;evaluation packets311bis consisted of packets3011-3015; andevaluation packets311cis consisted of packets3021-3025.Packets3001,3011 and3021 all have the same size. Similarly,packets3002,3012 and3022 all have the same size;packets3003,3013 and3023 all have the same size;packets3004,3014 and3024 all have the same size; andpackets3005,3015 and3025 all have the same size. Thereforeevaluation packets311a,311band311call have the same size. Using the same size or substantially same size evaluation packets for evaluation allowsprocessing unit201 to compare the performance of the connections more accurately. The contents of packets3001-3025 may be the same, different or generated randomly. The contents of packets3001-3025 may also belong to the same data session similar to other embodiments discussed earlier.
When a connection gets disconnected or fails while data packets are being transmitted through it, processingunit201 then transmits evaluation packets for determining performance of all three connections. For example, the first connection fails at a time between t-1 and t-2, such as at t-6, whiledata packets312 containing data-2 are being transmitted through it. Then processingunit201 does not wait till t-2 to transmit evaluation packets313 containing data-3 through all three connections. Instead, processingunit201 transmits evaluation packets313 through the first, second and third connections at about t-6. Then the performance of the three connections may be determined anddata packets314 containing data-4 are transmitted through one of the three connections according to the performance determined.
Alternatively, when the first connection fails, processingunit201 transmits evaluation packets313 only through the second and third connections at t-6 and determines the performance of the second and third connections. Thendata packets314 are transmitted through either the second or the third connection according to the performance determined. Performance of the first connection is not determined because the first connection has already failed, and may not be available for transmitting data packets immediately. This may also indicate that the first connection is less stable than others, and therefore irregularities in data transmission may be avoided by not using the first connection.
FIG. 4 illustrates an embodiment in which the connections are used to transmit data packets belonging to two data sessions concurrently. Timing graphs representing transmission of evaluation packets and data packets through connections at a communications device, such ascommunications device106, according to one of the embodiments of the present invention.FIG. 4 is viewed in conjunction withFIG. 2 for better understanding. Timinggraphs401,402 and403 are for first, second and third connections respectively.Communications device106 connects to the first, second and third connections through at least one of the plurality of network interfaces205. Time instances are represented by t-0, t-1, t-6, t-2, t-3, t-7, t-4, and t-5 respectively.
Evaluation packets410a,410band410care transmitted through the first, second and third connections respectively contain the same or substantially the same information data-0. Similarly,evaluation packets413a,413band413ccontain the same or substantially the same information data-3. Similarly,evaluation packets416a,416band416ccontain the same or substantially the same information data-6. As described earlier, contents of evaluation packets410,413 and416 may belong to a data session, predefined or randomly generated. Also, as described earlier, size ofevaluation packets410a,410band410cmay be the same. The same also applies to evaluation packets413 and416.
For illustration purpose,data packets411 and414, containing data-11 and data-12 respectively, belong to a first data session.Data packets412 and415, containing data-21 and data-22 respectively, belong to a second data session. In one variant, evaluation packets410,413 and416 belongs to either the first data session or the second data session. A user or administrator is able to select which data sessions to be used for evaluation packets. Alternatively, contents of evaluation packets410,413 and416 do not belong to any data session and contain information that is predefined. In one variant, when a user or administrator of the communications device, such ascommunications device106, gives higher preference to a particular data session, contents of evaluation packets410,413 and416 belong to the particular data session with higher preference. The user or administrator may have higher preference for the particular data session for various reasons. For example, the user might want the information of the particular data session to be transmitted faster than the information of other data session(s). For example, the user gives higher preference to the first data session because the user wants the information of the first data session to be transmitted earlier than the information of the second data session. Evaluation packets410,413 and416 then belong to the first data session. When evaluation packets410,413 and416 carry information of the first data session, more information belonging to the first data session is being transmitted compared to information belonging to the second data session within a given time period. Therefore, it is more likely that information of the first data session is transmitted earlier than the information of the second data session, according to the user's preference.
At about t-0,evaluation packets410a,410band410care transmitted through the first, second and third connections respectively for determining performance of the connections. At about t-1, processingunit201 determines that the first connection has the best performance. Thereforedata packets411 belonging to the first data session are transmitted through the first connection at about t-1. At about t-6,communications device106 can then start transmittingdata packets412 belonging to the second data session. Therefore, although there are two on going data sessions,communications device106 only uses one connection at a given time for transmitting data packets.Evaluation packets413a,413band413care transmitted through the first, second and third connections respectively for determining performance of the connections at about t-2. At about t-3, processingunit201 determines that the second connection has the best performance. Thereforedata packets414 belonging to the first data session are transmitted through the second connection at about t-3. Afterdata packets414 have been transmitted at about t-7, processingunit201 transmitsdata packets415 belonging to the second data session and re-evaluate the performance of the first, second and third connections again at about t-4. Therefore evaluation packets416, consisting ofevaluation packets416a,416band416c,are transmitted through the first, second and third connections respectively for determining their performance.
As illustrated inFIG. 4, only one connection is used for transmitting data packets at a given time even when there are two data sessions. For clarification, this invention also applies to three or more data sessions. One of the benefits of this is that, if the connections are connected to or passing through the same network, the bandwidth available for one connection may be more or less the same as the bandwidth available for all the connections. In addition, using only one connection may reduce channel interference if the connections are wireless access connections. For example, while transmittingdata packets411 belonging to the first data session, the first connection could have bandwidth capacity that is not interfered by the second and third wireless access connections. Furthermore, the amount of processing power and computing resources required could be less when using one connection at a time compared to when using more than one connection at a time.
In one variant, the first, second and third connections are access connections, such as wireless access connections using Wi-Fi, LTE and/or 3G communications technologies. In one variant, the first, second and third connections are VPN tunnels betweencommunications devices106 and108.
FIG. 5 illustrates one of the embodiments of the present invention in which more than one connection is used to transmit data packets belonging to more than one data sessions.FIG. 5 should be viewed in conjunction withFIG. 2 for better understanding. Timinggraphs501,502 and503 are for first, second and third connections respectively.Communications device106 connects to the first, second and third connections through at least one of the plurality of network interfaces205. Time instances are represented by t-1, t-2, t-3, t-4, and t-5 respectively.
Evaluation packets510a,510band510care transmitted through the first, second and third connections respectively and contain the same or substantially the same information data-0. Similarly,evaluation packets513a,513band153ccontain the same or substantially the same information data-3. Similarly,evaluation packets516a,516band516ccontain the same or substantially the same information data-6. Contents of evaluation packets510,513 and516 may belong to a data session, predefined or randomly generated. Also, as described earlier, size ofevaluation packets510a,510band510cmay be the same. The same also applies to evaluation packets513 and516.
InFIG. 5, transmission of data packets belonging to two data sessions is illustrated. Therefore,data packets511 and514, containing data-11 and data-12 respectively, belong to a first data session.Data packets512 and515, containing data-21 and data-22 respectively, belong to a second data session. In one variant, evaluation packets510,513 and516 belongs to either the first data session or the second data session. A user or administrator is able to select which data session the evaluation packets belong to. Alternatively, evaluation packets510,513 and516 do not belong to any data session and contain information that is predefined.
At t-0,evaluation packets510a,510b,and510care transmitted through the first, second and third connections respectively for determining the performance of the connections. At about t-1, processingunit201 determines that the first connection has the best performance, and the second connection has the second best performance. At about t-1,data packets511 belonging to the first data session anddata packets512 belonging to the second data session are transmitted through the first connection and the second connection respectively.
In one variant, the user or administrator gives higher preference to the first data session. Therefore, processingunit201 determines to transmitdata packets511 belonging to the first data session through the first connection which has the best performance because the user wants the first data session to be faster and more reliable.Data packets512 belonging to the second data session are transmitted through the second connection which has the second best performance.
In one variant, the user or administrator does not have any preference for a particular data session. Therefore the first and second connections are used by processingunit201 to transmit data packets belonging to the first or second data sessions randomly. Therefore, as an alternative to the illustration inFIG. 5,data packets512 may be transmitted through the first connection instead of the second connection, anddata packets511 may be transmitted through the second connection instead of the first connection.
At about t-2,evaluation packets513a,513band513care transmitted through the first, second and third connection respectively for determining the performance of the connections again. At about t-3, processingunit201 determines that the second and third connections have the best performances.
In one variant, when the user or administrator gives higher preference to the first data session,data packets514 belonging to the first data session are transmitted through the second connection because the second connection has the best performance, anddata packets515 belonging to the second data session are transmitted through 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 used to transmit data packets belonging to the first or second data sessions randomly. Therefore, as an alternative to the illustration inFIG. 5,data packets515 may be transmitted through the second connection instead of the third connection, anddata packets514 may be transmitted through the third connection instead of the second connection.
In one variant, the user or administrator does not have any preference for a particular data session. A connection, such as the second connection, was determined to be one of the connections having the best performance after a preceding evaluation time period, i.e. t-0 to t-1. The second connection is again determined to be one of the connections having the best performance after the evaluation time period t-2 to t-3. In this case, it is preferred to not change the connection for a data session if possible. More precisely, since the second connection was being used to transmitdata packets512 belonging to the second data session from t-1 until t-2, the second connection is again used to transmitdata packets515 belonging to the second data session from t-3 until t-4. In this way, the second data session will be smoother, since the connection being used is not switched.
When two connections are used for transmitting data packets of two data sessions respectively, data packets of both the first and data sessions may be transmitted simultaneously by using load balancing technology. Since the two data sessions may be concurrent, it is likely that the transmission is complete faster compared to when only one connection is used for both data sessions, especially when the two connections are not connected to, or passing through the same network. However, there may be some interference caused by the use of two connections at the same time. The processing power and resources required are also higher when the connections are balanced.
ComparingFIG. 3A,FIG. 4 andFIG. 5,FIG. 3A illustrates 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 illustrates the transmission of data packets belonging to two data sessions and only one connection is used at a given time.FIG. 5 also illustrates the transmission of data packets belonging to two data sessions, but unlikeFIG. 4, two connections are used at a given time for transmitting data packets belonging to the two data sessions respectively.
In one variant, after evaluation packets510 and513 are transmitted, processingunit201 may have decided that all three connections have satisfied performance requirements and therefore may transmitdata packets511,512,514 and515 through all three connections.
FIG. 6 illustrates timing graphs representing transmission of evaluation packets and data packets through connections at a communications device, such ascommunications device106, according to one of the embodiments of the present invention.FIG. 6 is viewed in conjunction withFIG. 2 for better understanding. Timinggraphs620,621,622,630 and631 are for a first, second, third, fourth, and fifth connection respectively.Communications device106 connects to the first, second, third, fourth, and fifth connections through at least one of the plurality of network interfaces205. Time instances are represented by t-1, t-2, t-3, t-4, and t-5 respectively. In one variant, the first, second, third, fourth, and fifth connections are access connections connected to networkinterfaces205 ofcommunications device106. In one variant, the first, second, third, fourth, and fifth connections are logical connections connected tocommunications device106 through network interfaces205.
The first, second, third, fourth and fifth connections are classified 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.Processing unit201 selects one connection from each group for transmitting data packets. Therefore, processingunit201 determines performance of the first group of connections, and selects one of the connections in the first group for transmitting data packets based on the performance. Similarly, processingunit201 determines performance of the second group of connections, and selects one of the connections in the second group for transmitting data packets based on the performance. Performance of the first and second group of connections may be determined simultaneously or almost simultaneously.
The connections are classified by processingunit201 into more than one group based on which specific types of data packets they are suitable for transmitting. Alternatively, the connections may be classified into groups according to a policy, for management purposes, according to historical performance evaluation, or any other reason for which having different groups of connections would be desirable. The user or administrator may choose more than one connection from each group for transmitting data packets. They can also choose not to use any connections from some groups for transmitting data packets. Therefore the scope of the invention is not limited to using one connection from each group for transmitting data packets.
Evaluation packets610a,610band610ctransmitted through the first, second and third connections respectively contain the same or substantially the same information data-10. Similarly,evaluation packets614a,614b,and614ccontain the same or substantially the same information data-12. Similarly,evaluation packets618a,618band618ccontain the same or substantially the same information data-14.Evaluation packets612aand612btransmitted through the fourth and fifth connections respectively contain the same or substantially the same information data-20. Similarly,evaluation packets615aand615bcontain the same or substantially the same information data-22. Similarly,evaluation packets619aand619bcontain the same or substantially the same information data-24. Evaluation packets610,614 and618 are transmitted for determining the performance of the first group of connections. Evaluation packets612,615 and619 are transmitted for determining the performance of the second group of connections. As described earlier, contents of evaluation packets610,614,618,612,615 and619 may belong to a data session, may be predefined or may be randomly generated. Also, as described earlier, size ofevaluation packets610a,610band610cmay be the same. The same also applies to evaluation packets614,618,612 and619.
Evaluation packets610a,610band610care transmitted through the first, second, and third connections respectively at about t-1. Performance of the first group of connections is determined by transmitting evaluation packets610 through all three connections of the first group.Processing unit201 determines that performance of the first connection is the best among the first group of connections. Therefore, at about t-1, processingunit201 determines to transmitdata packets611 containing data-11 through the first connection. Similarly, at about t-0, performance of the second group of connections is determined by transmittingevaluation packets612aand612bthrough the fourth and fifth connections respectively. At about t-1, processingunit201 determines that the fifth connection has the best performance among the second group of connections. Therefore processingunit201 determines to transmitdata packets613 containing data-21 at about t-1 through the fifth connection.
Processing unit201 again determines the performance of the first group of connections by transmittingevaluation packets614a,614band614cthrough the first, second and third connections respectively at about t-2. At about t-3, processingunit201 determines that the second connection has the best performance. Therefore,data packets616 containing data-13 are transmitted through the second connection at about t-3. At the same time, the performance of the second group of connections is determined by transmittingevaluation packets615aand615bthrough the fourth and fifth connections respectively at about t-2.Processing unit201 determines that the fourth connection has the best performance among the second group of connections at about t-3. Thereforedata packets617 containing data-23 are transmitted through the fourth connection at about t-3. At about t-4,evaluation packets618a,618band618care transmitted through the first, second and third connections respectively andevaluation packets619aand619bare transmitted through the fourth and fifth connections respectively for determining the performance of the first and second group of connections respectively.
In one of the embodiments, the plurality of network interfaces205 is classified into a first and a second group. Performance of connections connected to network interfaces in the first group is determined by transmitting evaluation packets610,614, and618. Evaluation packets610,614 and618 are transmitted through connections connected to network interfaces in the first group. Performance of connections connected to network interfaces in the second group is determined by transmitting evaluation packets612,615 and619. Evaluation packets612,615 and619 are transmitted through connections connected to network interfaces in the second group. One network interface is selected from each group for transmitting data packets according to the performance determined. Therefore, the network interface connected to the connection with the best performance is selected from each group.
At a given time, two connections are being used to transmit data packets atcommunications device106. One of the two connections belongs to the first group, and another one of the two connections belong to the second group. In one variant, when the first, second, third, fourth, and fifth connections are logical connections, the two connections used for transmitting data packets are bonded together to form an aggregated connection. Alternatively, the two connections used for transmitting data packets are balanced. In one of the embodiments, the connections are classified into groups by processingunit201 based on certain conditions. The conditions are stored insecondary storage204. The conditions are selected from a group consisting of performance metric, service provider, usage metric, location, time, usage price, security, user, Internet Protocol address range, communication protocol, communication technology, application, and device. Connections may belong to a certain group if they satisfy conditions corresponding to the certain group, A connection may belong to more than one group.
In an example, viewing in conjunction withFIG. 6, there are two ongoing data sessions atcommunications device106. A first data session betweencommunications device106 and108 is a File Transfer Protocol (FTP) session, and a second data session betweencommunications device106 and108 is a video conferencing session. The FTP session uses the first group of connections comprising the first, second and third connections, and the video conferencing session uses the second group of connections comprising the fourth and fifth connections.Evaluation packets610a,610b,and610chave the same size.Evaluation packets610a,610b,and610cmay or may not have the same information. Evaluation packets having the same size are used to determine and compare performance of the connections accurately.Evaluation packets612aand612bhave the same size. The same applies to evaluation packets614,615,618 and619. Data-10, data-12 and data-14 are predefined data contained in evaluation packets610,614 and618 respectively.Data packets611 and616, containing data-11 and data-13 respectively, are packets of a file belonging to the FTP session. Therefore, while determining the performance of the connections, the FTP session is interrupted momentarily, and transmission of packets of the file resumes when the determining is complete. Data-20, data-21, data-22, data-23 and data-24 are a first, second, third, fourth, and fifth frame of the video conferencing session. At a given time, the connection(s) being used by the FTP session and the connection(s) being used by the video conferencing sessions are either balanced using load balancing technology or bonded to form an aggregated connection.
ComparingFIG. 6 withFIG. 4, bothFIG. 6 andFIG. 4 illustrate the transmission of packets belonging to two data sessions. However, inFIG. 6, packets belonging to the two data sessions are transmitted through two connections classified into different groups. Evaluation packets transmitted through each group of connections may be different. At a given time, two connections are used for transmitting data packets. On the other hand, inFIG. 4, only one connection is used for transmitting data packets at a given time and the connections are not classified into different groups.
ComparingFIG. 6 andFIG. 5, bothFIG. 6 andFIG. 5 illustrate the transmission of packets belonging to two data sessions and two connections may be used at a given time in bothFIG. 6 andFIG. 5. The difference betweenFIG. 6 andFIG. 5 is the classification of connections into different groups inFIG. 6. Evaluation packets610,614 and618 transmitted through the first group of connections contain data belonging to the first data session, and evaluation packets612,615 and619 transmitted through the second group of connections contain data belonging to the second data session in some scenarios illustrated byFIG. 6. However, in scenarios illustrated inFIG. 5, evaluation packets transmitted through 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 which the connections belong to. Therefore, inFIG. 6, the evaluation for the different groups of connections may be carried out in different processes.
Furthermore, inFIG. 5, data packets belonging to the first and second data session are transmitted through any two connections determined to have the best performance. Whereas, inFIG. 6, data packets belonging to the first data session is transmitted through the connection having the best performance among the first group of connections, and data packets belonging to the second data session is transmitted through the connection having the best performance among the second group of connections.
The benefit of choosing one connection from each group, as illustrated inFIG. 6, may be that each group of connections may be optimal for transmitting a specific type of data packet. Since the first data session and the second data session may comprise data packets of different types, it may be desirable to transmit data packets belonging to different data sessions through connections of different groups. However, classifying the connections according to data type may consume high computing resources if there is a change in data types frequently.
In an alternative,FIG. 6 illustrates transmission of packets belonging to one data session. Therefore,data packets611,613,616 and617 belong to the same data session. Evaluation packets610,612,614,615,618 and619 may also belong to the same data session asdata packets611,613,616 and617.
FIG. 7 illustrates timing graphs representing transmission of evaluation packets and data packets through logical connections at a communications device, such ascommunications device106, according to one of the embodiments of the present invention. Timinggraphs701,702,703,704 and705 are for a first, second, third, fourth, and fifth logical connection respectively.Communications device106 connects to the first, second, third, fourth, and fifth logical connections through at least one of the plurality of network interfaces205. Time instances are represented by t-1, t-2, t-3, t-4, and t-5 respectively.
At a given time,communications device106 uses two logical connections for transmitting data packets. The two logical connections are selected based on performance determined by processingunit201. Performance of the five logical connections is determined by transmitting evaluation packets containing the same information through all five logical connections.
Evaluation packets710a,710b,710c,710dand710etransmitted through the first, second, third, fourth and fifth logical connections respectively contain the same or substantially the same information data-0. Similarly,evaluation packets713a,713b,713c,713dand713econtain the same or substantially the same information data-3. Similarly,evaluation packets716a,716b,716c,716dand716econtain the same or substantially the same information data-6. Evaluation packets710,713 and716 are transmitted by processingunit201 for determining performance of the logical connections. As described earlier, contents of evaluation packets710,713 and716 may belong to a data session, predefined or randomly generated. Also, as described earlier, size ofevaluation packets710a,710band710cmay be the same. The same also applies to evaluation packets713 and716.
Processing unit201 determines to transmitevaluation packets710a,710b,710c,710dand710ethrough the first, second, third, fourth and fifth logical connections respectively at about t-0. At about t-1, processingunit201 determines performance of the five logical connections and selects the two logical connections with best performance, namely the first and third logical connections, for transmitting data packets. For example, the third logical connection has the best performance and the first logical connection has the second best performance. Therefore,data packets711 containing data-1 anddata packets712 containing data-2 are transmitted through the first and third logical connection respectively at about t-1.
Processing unit201 re-determines performance of the five logical connections by transmittingevaluation packets713a,713b,713c,713dand713ethrough the first, second, third, fourth and fifth logical connections at about t-2. The performance of the first logical connection continues to be one of the best among the five logical connections. Thereforedata packets714 containing data-4 are transmitted through the first logical connection at about t-3. At the sametime data packets715 containing data-5 are transmitted through the fourth logical connection because the fourth logical connection is determined to be another one of the logical connections having the best performance among the five logical connections. Evaluation packets716 are transmitted at about t-4 for determining the performance of the five logical connections again.
In an example,communications device106 transmits Voice over Internet Protocol (VoIP) packets belonging to a VoIP session through an aggregated connection tocommunications device108. It would be known to those skilled in the art that latency of connections is preferred to be lower than about 500 milliseconds in order to achieve proper quality of the VoIP session. The aggregated connection comprising the first, second, third, fourth, and fifth logical connection which are VPN tunnels.Evaluation packets710a,710b,710c,710d,and710ehave the same size, and contain the same information data-0. The same applies to evaluation packets713 and716. Evaluation packets710,data packets711,data packets712, evaluation packets713,data packets714,data packets715, and evaluation packets716 are VoIP packets belonging to the VoIP session. Furthermore, data-0, data-1, data-2, data-3, data-4, data-5 and data-6 may be encapsulated in encapsulating packets that contain encryption information associated with the authentication required to connect to the VPN tunnels. Connections with a latency lower than about 500 milliseconds may be selected for transmitting VoIP packets.
In one of the embodiments, evaluation packets710,713, and716 are transmitted through the plurality ofnetwork interfaces205 to determine performance of logical connections established through the plurality of network interfaces205. One or more network interfaces connecting to the connections determined to have the best performance are selected for transmitting data packets. At least one logical connection established through the network interfaces selected is used to transmit data packets. For example, a first network interface is determined to have the best performance. The first network interface is connected to a first and second logical connection.Processing unit201 determines to use at least one of the first and second logical connection to transmit data packets.
ComparingFIG. 7 withFIG. 3A, both the figures illustrate transmission of packets belonging to one data session. The difference is that, inFIG. 7, two logical connections are used for transmitting data packets at a given time and inFIG. 3A, one connection is used for transmitting data packets at a given time. The benefit of the scenarios illustrated inFIG. 7 is that higher bandwidth is available for the data session since more than one logical connection are used for transmitting data packets. InFIG. 7, since data packets belonging to one data session are transmitted through more than one logical connection, the logical connections are bonded to form an aggregated connection. InFIG. 3A, the connections may be logical connections or access connections. However, inFIG. 7, only logical connections are used, and access connections cannot be used because access connections cannot be aggregated.
In an alternative,FIG. 7 illustrates transmission of packets belonging to two data sessions. Therefore,data packets711 and712 may belong to different data sessions. Similarly,data packets714 and715 may belong to different data sessions.
InFIG. 3A,FIG. 4,FIG. 5,FIG. 6 andFIG. 7, the reason why the performance of the connections is determined periodically, for example, once at t-0, again at t-2 and again at t-4 is that the performance may change from time to time. In many scenarios, the performance of connections, especially those connecting to wireless networks, is not stable and some connections have satisfactory performance at one time and unsatisfactory performance at another time. In a preferred embodiment, when performance of the connections is determined, the time period between determinations of the performance is within the range of five seconds to one minute. Performance is determined periodically every five seconds to one minute for adapting to changes in network environment because performance of connections may change every few seconds. Therefore the time period t-0 to t-2 and the time period t-2 to t-4 is in the range of five seconds to one minute. Alternatively, when performance of the connections is determined in order to check for connection failure, the time period allowed between evaluations of the performance is preferably within the range of half an hour to one hour. Therefore the time period t-0 to t-2 and the time period t-2 to t-4 is in the range of half an hour to one hour. The process is continued after t-5.FIG. 3A,FIG. 4,FIG. 5,FIG. 6 andFIG. 7 are just illustrations of how data packets are transmitted through each of the connections for determining performance of the connections periodically and selecting one of the connections for transmitting data packets based on the performance determined. After t-5, processingunit201 chooses connection(s) for transmitting data packets based on the performance of the connections determined at about t-5. Hence, it should be noted that the process does not end after t-5.
In another example, inFIG. 7, evaluation packets710,713, and716 belong to the same data session asdata packets711,712,714 and715. Therefore the evaluation packets and the data packets are transmitted in the data session and each of the packets has a sequence number so thatcommunications device108, which is the receiving device, can arrange them accordingly.
The evaluation packets and data packets are assigned with a corresponding sequence number. The sequence number is in the information contained in the evaluation packets. When evaluation packets and data packets are assigned with a corresponding sequence number, the designated host or node arranges the packets arriving at the designated host or node according to their corresponding sequence numbers. When evaluation packets, belonging to the a data session, contain the same or substantially same information and arrive at a designated host or node, the designated host or node is capable of recognizing that the evaluation packets contain the same or substantially same information based on, at least in part, the sequence number. The designated host or node may choose to ignore, drop, discard or process evaluation packets arriving after the first evaluation packets. They may choose to process it for statistical purposes, such as monitoring performance and keeping records of the performance. The information is contained or encapsulated in the payload of the evaluation packets.
According to one of the embodiments, evaluation packets for determining performance of the connections are transmitted through the connections for a first predefined time period. When a connection is selected for transmitting data packets based on its performance, data packets are transmitted through the connections for a second predefined time period. For example, viewingFIG. 3A,FIG. 4,FIG. 5,FIG. 6 orFIG. 7, the first predefined time period is equal to the time period between t-0 and t-1, t-2 and t-3, or t-4 and t-5. In one variant, time period between t-0 and t-1 is a little longer than time period between t-2 and t-3 or between t-4 and t-5 because initialization time of the connection is included in the time period between t-0 and t-1. In one variant, time periods t-0 to t-1, t-2 to t-3 and t-4 to t-5 are not the same, but each of them are predefined. In one variant, time period between t-0 and t-1, t-2 and t-3, and t-4 and t-5 are the same, and are predefined. Similarly, the second predefined time period is equal to the time period between t-1 and t-2, or t-3 and t-4. In one variant, time periods t-1 to t-2, and t-3 to t-4 are not the same, but each of them are predefined. Alternatively, time periods t-1 to t-2, and t-3 to t-4 are the same and are predefined. The respective predefined time periods may be set by a user, manufacturer or administrator ofcommunications device106. In one variant, the user sets the predefined time period through a web interface, an application programming interface (API), a command line interface or a console.Processing unit201 retrieves the predefined time periods locally fromsecondary storage204 or remotely from a remote server.
In one of the embodiments, frequency of determining performance of connections at a communications device, such ascommunications device106, is low if the connections are stable. Therefore, evaluation packets are transmitted less often. The time period for which data packets are transmitted continuously is significantly longer compared to when the connections are not stable. When the connections are stable, a connection determined to have the best performance after an evaluation is more likely to continue having the best performance for a longer time. Alternatively, when the connections are unstable, a connection determined to have the best performance after an evaluation is less likely to continue having the best performance for a long time. It would be known to those skilled in the arts that the performance may change at any moment every 5 seconds. Therefore, when the connections are stable, determining performance of connections is performed less often and data packets are transmitted continuously for a longer time period. When the connections are unstable, determining performance of connections is performed more often and data packets are transmitted continuously for a shorter time period. This is particularly important for wireless communications, as the connections are more likely to be unstable in wireless communications.
In one of the embodiments, evaluation packets are transmitted for a longer time period. For example, the time period between t-0 and t-1 is long. The benefit of transmitting evaluation packets for a longer time period is that the evaluation of performance gives better results. This is because more number of evaluation packets may be transmitted in the time period, and therefore the evaluation is more reliable. However, transmitting evaluation packets for a longer time period causescommunications device106 to use up more bandwidth for evaluation, and since evaluation packets are transmitted through multiple connections, the increase in bandwidth usage may be significant. In addition to that, if the evaluation packets contain information that is predefined and does not belong to a data session, the flow of data transmission will be disrupted, interrupted or paused for a longer period of time, and that may be undesirable. When there are two ongoing data sessions and evaluation packets belong to a first data sessions, a second data session is disrupted for a longer time period, which is not desirable in most scenarios. Alternatively, evaluation packets are transmitted for a shorter time period. Therefore, less bandwidth is consumed during evaluation of the performance of the connections. In one variant, transmitting evaluation packets for a shorter time period is also desirable when evaluation packets contain information that is predefined and does not belong to a data session because the flow of data transmission is disrupted for a shorter period of time. However, since less number of evaluation packets may be transmitted in a shorter time period, the evaluation may not be reliable enough.
In one of the embodiments of the present invention, when two or more logical connections are selected for transmitting data packets, the two or more logical connections are bonded to form an aggregated connection. The two or more logical connections are bonded only if the packets transmitted through them belong to the same data session. The two or more logical connections are end-to-end connections that are formed between the same two nodes, whereincommunications device106 is one of the two nodes. To form an aggregated connection, the data packets encapsulate packets before being transmitted through the two or more logical connections. The packets may originate fromcommunications device106 and/or from host(s) and/or node(s) connecting tocommunications device106. Using an aggregated connection is beneficial for having a higher overall bandwidth which is a combined bandwidth of the individual logical connections. The aggregated connection is perceived as one logical connection by sessions or applications that are using it. For example, viewing in conjunction withFIG. 7, in the time period t-1 to t-2, the first and third logical connections are being used to transmit data packets. Therefore the first and third logical connections are bonded together to form an aggregated connection. Similarly, in the time period t-3 to t-4, the first and fourth logical connections are bonded and are comprised in the aggregated connection. The third logical connection may still be comprised in the aggregated connection, but it is not used for transmitting data packets. Alternatively, the third logical connection is removed from the aggregated connection when it is not being used to transmit data packets. This may apply toFIG. 6 also, where two connections selected for transmitting data packets at a given time are bonded together to form an aggregated connection.
Alternatively, when two or more connections are selected for transmitting data packets, the two or more connections are balanced. The two or more connections are balanced preferably when the data packets transmitted through them belong to different data sessions. The data packets are distributed among and transmitted through the two or more connections using load balancing technology, or any other technology that allows data packets to be distributed and transmitted among multiple connections. For example, viewing in conjunction withFIG. 7, from t-1 to t-2, data packets are distributed among and transmitted through the first and third logical connections. Similarly, from t-3 to t-4, data packets are distributed among and transmitted through the first and fourth logical connections. This may apply toFIG. 6 also, where data packets are distributed among and transmitted through the two connections, belonging to two different groups, and selected for transmitting data packets at a given time.
In the embodiments described herein, performance of connections are determined according to at least one of the following criteria: throughput, error rates, packet latency, packet jitter, symbol jitter, quality of service, security, coverage area, bandwidth, bit error rate, packet error rate, frame error rate, dropped packet rate, queuing delay, round trip time, capacity, signal level, interference level, bandwidth delay product, handoff delay time, signal-to-interface ratio, and signal-to-noise ratio. For example, when performance is determined according to the dropped packet rate, the connection which has the least dropped packet rate is determined to have the best performance. In another example, when performance is determined according to the throughput, the connection with the highest throughput is determined to have the best performance. Performance may be determined according to more than one criterion.
In one variant, a user or administrator may configurecommunications device106 to determine performance according to a certain criterion. If the user or administrator chooses bandwidth, bandwidth of connections will be evaluated, and connection(s) with highest bandwidth(s) will be selected for transmitting data. If the user or administrator chooses latency, latency of connections will be evaluated, and connection(s) with lowest latency will be selected for transmitting data.
FIG. 8A is a flowchart illustrating a process according to one of the embodiments of the present invention.Processing unit201 determines the performance of a connection instep801 by transmitting evaluation packets through the connection. If it is determined instep802 that the performance of the connection is worse than a threshold, the connection is terminated instep803. Alternatively, if the performance is determined not to be worse than the threshold, the connection is not terminated instep804. When the connection is terminated, evaluation packets are no longer transmitted through the connection, and hence the performance of the connection is not determined again. Computing resources and bandwidth resources may be saved by not performing determination of the performance of the connection. For example, viewing in conjunction withFIG. 3A, processingunit201 determines the performance of the third connection instep801 by transmittingevaluation packets311c.Instep802, processingunit201 determines that the performance of the third connection is worse than the threshold. Therefore the third connection is terminated instep803 andevaluation packets313cand315care not transmitted through the third connection.
In a preferred embodiment, as illustrated inFIG. 8B, if the performance of the connection is worse than the threshold, the connection is not terminated, but further evaluation packets or data packets are not transmitted through the connection instep813. If the performance of the connection is determined not to be worse than the threshold, the connection is not terminated and further evaluation packets are sent through the connection as well instep814. The benefit of performingstep813 instead ofstep803 is that when a user or administrator wants to use the connection later on, they would not need to establish the connection again. Establishing a connection may take some time and computing resources. Therefore, the connection is not terminated and is just not allowed to be used to transmit further evaluation packets or data packets.
The threshold may be predefined and stored in a storage medium, such assecondary storage204 ormain memory202. The threshold may be set by a user or administrator ofcommunications device106. The threshold may be part of settings required to establish the connection.
If the performance of a connection is worse than a threshold, terminating a tunnel or not sending evaluation packets through the connection may be beneficial for saving bandwidth resources and other computing resources.
FIG. 9 is a flowchart illustrating a process according to one of the embodiments of the present invention. Latency requirement of data packets is determined and connections are selected for transmitting the data packets based on the latency requirement of the data packets. For illustration purposes, since latency requirement of data packets belonging to voice traffic may be less than about 500 milliseconds, data packets belonging to voice traffic are only transmitted through connections with latency less than about 500 milliseconds. Referring toFIG. 9, instep901, latency of a connection is determined by transmitting evaluation packets through the connection. Ifprocessing unit201 determines instep911 that the latency of the connection is higher than a first threshold, the connection is terminated or determined not to be used to transmit packets instep921. Preferably, the first threshold is about 1000 milliseconds, such that, if the latency of the connection is higher than 1000 milliseconds, the connection is determined not to be used instep921. If the latency is not higher than the first threshold, processingunit201 determines whether the latency is higher than a second threshold instep912. If the latency is higher than the second threshold, the connection is classified into a first group instep922. 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. Connections in the first group, such as the connection, with latency higher than about 800 milliseconds are not good for video transmission or voice transmission because of the high latency. Therefore they are not used for video traffic and voice traffic, but they may be used for any other type of traffic for which latency higher than about 800 milliseconds may be tolerated. If the latency of the connection is not higher than the second threshold, the connection may be allowed to be used for video traffic. Atstep913, processingunit201 determines whether the latency of the connection is higher than a third threshold. The connection is classified into a second group instep923 if the latency is higher than the third threshold. The third threshold is preferably about 500 milliseconds. Connections in the second group are allowed to be used for video transmission but not for voice transmission, as quality of video transmission may be satisfactory with latency higher than about 500 milliseconds and lower than about 800 milliseconds, but quality of voice transmission may be very poor with latency higher than about 500 milliseconds. If the connection has latency not higher than the third threshold, the connection is classified into a third group. Connections in the third group are allowed to be used for video transmission and voice transmission, as quality of voice transmission may be satisfactory with latency lower than about 500 milliseconds. The first, second and third thresholds are configurable and may be configured by the user or administrator ofcommunications device106.
According to one of the embodiments of the present invention, if the difference in latency between two or more connections in an aggregated connection is higher than a latency discrepancy threshold, one or more connections with comparatively high latency is terminated, or packets are not transmitted through the one or more connections. For illustration purposes, the latency discrepancy threshold is about 500 milliseconds. The latency of a first connection is 400 milliseconds and the latency of a second connection is 950 milliseconds. Since the difference in latency between the first and second connection is higher than about 500 milliseconds, the second connection is terminated or not used for transmitting data packets. In another illustration, the latency of a first, second and third connection is 400, 950 and 980 milliseconds respectively, and the latency discrepancy threshold is about 500 milliseconds. Since the differences in latency 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 for transmitting data and may be terminated. In another illustration, 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 for transmitting data packets and may be terminated. When packets are being transmitted fromcommunications device106 tocommunications device108 through an aggregated connection comprising the first connection and the second connection, a first packet transmitted through the first connection may arrive much earlier than a second packet transmitted through the second connection. Even if a third packet and a fourth packet arrive early through the first connection,communications device108 only acknowledges the arrival of the first packet, and since the second packet has not arrived, all three of the second, third and fourth packet are transmitted again. Therefore, resources may be saved by terminating the second connection or not using the second connection, so that all four of the first, second, third and fourth packets are transmitted through the first connection and packets do not need to be retransmitted.
In one variant, the second connection may be used for transmitting any packets other than data packets, such as health-check packets, evaluation packets, etc. If the latency of the second connection is later determined to become lower, then the second connection may again be used for transmitting data packets. In order to monitor the latency of the second connection,communications device106 does not terminate the second connection and continues sending evaluation packets through the second connection even after determining that the difference in latency is higher than the latency discrepancy threshold.
In one variant, the latency discrepancy threshold is predefined and may be set by a user or administrator ofcommunications device106. Alternatively, the latency discrepancy threshold may be set periodically by processingunit201. Alternatively, the latency discrepancy threshold may be set dynamically or automatically by processingunit201 based on, at least in part, the average latency of two or more connections in the aggregated connection. The average latency may be calculated based on latency values evaluated within a specific time period. The specific time period may be in the range of 10 milliseconds to 5 minutes. The latency discrepancy threshold may be set as percentage value of the average latency. For illustration purposes, the latency discrepancy threshold may be set to 20% of the average latency of all connections of the aggregated connection. When latencies experienced by a first, second and third connections are about 400 milliseconds, 500 milliseconds, and 900 milliseconds respectively, the average latency is about 600 milliseconds. The latency discrepancy threshold may then be set dynamically to 20% of 600 milliseconds, which is 120 milliseconds. Since the difference between the latency of the third connection and the average latency is more than 120 milliseconds, processingunit201 may determine not to use the third connection for transmitting data packets. The percentage value may be configured by a user or administrator. In another illustration, the latency discrepancy threshold may be set to 30% of the average latency of connections with comparatively low latencies, and not all connections in the aggregated connection. When latencies experienced by a first, second and third connections are about 400 milliseconds, 500 milliseconds, and 900 milliseconds respectively, the average latency of connections with comparatively low latency is 450 milliseconds. The latency discrepancy threshold may be automatically set by processingunit201 to 30% of 450 milliseconds, which is 135 milliseconds. Since the difference between the latency of the third connection and the average latency is more than 135 milliseconds, processingunit201 may determine not to use the third connection for transmitting data packets. In another variant, a user or administrator ofcommunications device106 may define policies for dynamically setting the latency discrepancy threshold. For illustration, a policy is defined such that if average latency of connections with comparatively low latency is less than 100 milliseconds, the latency discrepancy threshold is dynamically set to 100 milliseconds. The policy may further be defined such that if the average latency of connections with comparatively low latency is between 100 to 500 milliseconds, the latency discrepancy threshold is dynamically set to 400 milliseconds. It should be appreciated that these values are exemplary and there may be various other ways of dynamically setting the latency discrepancy threshold. Connections with comparatively low latencies may include any connections except the connection with the highest latency. Alternatively, connections with comparatively low latencies may include any connections which have latencies within a certain range of the lowest latency.
When there are more than two connections, the latency discrepancy threshold may be used in various ways. For illustration purposes, there are five connections, namely a first, second, third, fourth and fifth connection. 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 fifth connection's latency, and the lowest latency, i.e. the first connection's latency, is more than the latency discrepancy threshold, the fifth connection is no longer used for transmitting data packets and may be terminated. In another illustration, if the difference between the fifth connection's latency and the average latency of the first, second, third and fourth connections is higher than the latency discrepancy threshold, the fifth connection is no longer used for transmitting data packets and may be terminated. In another illustration, when the latency of each of the first, second, third, and fourth connections is around 500 milliseconds, the latency of the fifth connection is around 1000 milliseconds, and the latency discrepancy threshold is 400 milliseconds, the fifth connection is not used for transmitting data packets and may be terminated. In one illustration, the average, variance, and standard deviation of latencies of the first, second, third, fourth and fifth connections is calculated. The latency discrepancy threshold is set to be the standard deviation of the latencies. If the difference between latencies of the connections is higher than the standard deviation, one or more connections with comparatively high latency is no longer used for transmitting data and may be terminated.
For illustration purpose, when there are one or more connection established through an LTE network or Ethernet interface, processingunit201 does not connect to a 3G network even when it is capable of doing so through one or more of network interfaces205. It should be known to those skilled in the art that the latency of connections established through a 3G network may be significantly higher than that of connections established through LTE network or 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 embodiments) and exemplary embodiments only, and is not intended to limit the scope, applicability or configuration of the invention. Rather, the ensuing description of the preferred exemplary embodiment(s) and exemplary embodiments will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the invention. It is 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.
Also, it is 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. In addition, the order of the operations may be rearranged. A process is terminated when its operations are completed, but could 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 process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
Embodiments, or portions thereof, may be embodied in program instructions operable upon a processing unit for performing functions and operations as described herein. The program instructions making up the various embodiments may be stored in a storage medium, such as a secondary storage.
Moreover, as disclosed herein, the term “secondary storage” and “main memory” 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 mediums, optical storage mediums, flash memory devices and/or other machine readable mediums 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 storage medium. A processing unit(s) may perform the necessary tasks. A processing unit(s) can be a CPU, an ASIC semiconductor chip, a semiconductor chip, a logical unit, a digital processor, an analog processor, a FPGA or any processor that is 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.
A network interface may be implemented by a standalone electronic component or may be integrated with other electronic components. A network interface may have no network connection or at least one network connection depending on the configuration. A network interface is only connected to one accessible network. Therefore, there may be more than one network connection being carried by one accessible network. A network interface may be an Ethernet interface, a frame relay interface, a fibre optic interface, a cable interface, a DSL interface, a token ring interface, a serial bus interface, a universal serial bus (USB) interface, Firewire interface, Peripheral Component Interconnect (PCI) interface, etc.
Embodiments, or portions thereof, may be embodied in a computer data signal, which may be in any suitable form for communication over a transmission medium such that it is readable for execution by a functional device (e.g., processing unit) for performing the operations described herein. The computer data signal may include any binary digital electronic signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic media, radio frequency (RF) links, and the like, and thus the data signal may be in the form of an electrical signal, optical signal, radio frequency or other wireless communication signal, etc. The code segments may, in certain embodiments, be downloaded via computer networks such as the Internet, an intranet, LAN, MAN, WAN, the PSTN, a satellite communication system, a cable transmission system, and/or the like.
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 (POP3), File Transfer Protocol (FTP), and Internet Message Access Protocol (IMAP). An access connection may be a wired network or a wireless network. A 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 that can pass information. A wireless access connection may be implemented using infra-red, High-Speed Packet Access (HSPA), HSPA+, Third Generation of mobile telecommunications technology (3G), Fourth Generation of mobile telecommunications technology (4G), Long Term Evolution (LTE), WiMax, ATM, GPRS, EDGE, GSM, COMA, WiFi, CDMA2000, WCDMA, TD-SCDMA, BLUETOOTH, WiBRO or any other wireless technologies.
A logical connection can be made at eitherLayer 2 orLayer 3 of the (Open Systems Interconnection) OSI model that connects two endpoints over a public, private or hybrid public and private network to form a connection. Virtual private network (VPN) is one example of logical connection models. A VPN can be aLayer 2 VPN orLayer 3 VPN. A logical connection can also be established using connection oriented communication protocol, such as transmission control protocol (TCP). A logical connection may be referred as an end-to-end connection as it forms a connection between two endpoints.

Claims (18)

The invention claimed is:
1. A method for transmitting data packets through a plurality of connections at a first communication device, wherein the plurality of connections are established between the first communication device and a second communication device, the method comprising:
a. determining performance of at least one of the plurality of connections;
b. determining a first group of connections based on the performance of the at least one of the plurality of connections;
c. creating a first plurality of data packets;
d. transmitting the first plurality of data packets through the first group of connections at about the same time; and
e. determining performance of at least one of the plurality of connections periodically at every five seconds to one minute;
wherein the performance of the at least one of the plurality of connections is determined based on transmission and receipt of the first plurality of data packets;
f. terminating or not using a connection when the performance is based on at least one of, latency and packet drop and the plurality of connections has a latency difference higher than a latency discrepancy threshold;
wherein the connection has the highest latency among the plurality of connections;
wherein the plurality of connections belong to an aggregated connection;
wherein the transmission and receipt of the first plurality of data packets is performed for a predefined time period;
wherein the predefined time period may be set by a user, manufacturer or an administrator;
wherein the plurality of connections are classified into more than one group, based on conditions;
wherein the conditions are selected from a group consisting of performance metric, service provider, usage metric, location, time, usage price, security, user, Internet Protocol address range, communication protocol, communication technology, application, and device.
2. The method ofclaim 1, wherein each data packet of the first plurality of data packets encapsulates a first data packet.
3. The method ofclaim 2, wherein the first data packet is received from a first host connecting to the first communication device.
4. The method ofclaim 1, wherein each data packet of the first plurality of data packets encapsulates content of a second data packet.
5. The method ofclaim 1, wherein the first plurality of data packets encapsulate predefined information in payload of the first plurality of data packets when there is no data packet destined to a second host reachable through the second communication device received from the first host.
6. The method ofclaim 1, wherein the plurality of connections are bonded to form an aggregated connection; and wherein the plurality of connections are bonded when the packets transmitted through the plurality of connections belong to a same data session.
7. The method ofclaim 1, wherein the first plurality of data packets have the same size.
8. The method ofclaim 1, wherein each data packet of the first plurality of data packets further encapsulates performance information.
9. The method ofclaim 1, wherein at least one of the first group of connections is established through a wireless access connection.
10. A first communication device for transmitting data packets through a plurality of connections, wherein the plurality of connections are established between the first communication device and a second communication device, the first communication device comprising:
a plurality of network interfaces;
at least one processing unit;
at least one main memory;
at least one non-transitory computer readable storage medium for storing program instructions executable by the at least one processing unit for:
a. determining performance of at least one of the plurality of connections;
b. determining a first group of connections based on the performance of the at least one of the plurality of connections;
c. creating a first plurality of data packets;
d. transmitting the first plurality of data packets through the first group of connections at about the same time; and
e. performing step(a) periodically at every five seconds to one minute;
wherein the performance of the at least one of the plurality of connections is determined based on transmission and receipt of the first plurality of data packets;
f. terminating or not using a connection when the performance is based on at least one of, latency and packet drop and the plurality of connections has a latency difference higher than a latency discrepancy threshold;
wherein the connection has the highest latency among the plurality of connections;
wherein the plurality of connections belong to an aggregated connection;
wherein the transmission and receipt of the first plurality of data packets is performed for a predefined time period;
wherein the predefined time period may be set by a user, manufacturer or an administrator;
wherein the plurality of connections are classified into more than one group based on conditions;
wherein the conditions are selected from a group consisting of performance metric, service provider, usage metric, location, time, usage price, security, user, Internet Protocol address range, communication protocol, communication technology, application, and device.
11. The first communication device ofclaim 10, wherein each data packet of the first plurality of data packets encapsulates a first data packet.
12. The first communication device ofclaim 11, wherein the first data packet is received from a first host connecting to the first communication device.
13. The first communication device ofclaim 10, wherein each data packet of the first plurality of data packets encapsulates content of a second data packet, wherein the second data packet is received from a first host connecting to the first communication device.
14. The first communication device ofclaim 10 wherein the first plurality of data packets encapsulate predefined information in payload of the first plurality of data packets when there is no data packet destined to a second host reachable through the second communication device received from the first host.
15. The first communication device ofclaim 10, wherein the plurality of connections are bonded to form an aggregated connection; and wherein the plurality of connections are bonded when the packets transmitted through the plurality of connections belong to a same data session.
16. The first communication device ofclaim 10, wherein the first plurality of data packets have the same size.
17. The first communication device ofclaim 10, wherein each data packet of the first plurality of data packets further encapsulates performance information.
18. The first communication device ofclaim 10, wherein at least one of the first group of connections is established through a wireless access connection.
US15/877,2582014-07-142018-01-22Methods and systems for evaluating network performance of and transmitting packets through an aggregated connectionActiveUS10511522B2 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US15/877,258US10511522B2 (en)2014-07-142018-01-22Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection

Applications Claiming Priority (4)

Application NumberPriority DateFiling DateTitle
PCT/IB2014/063084WO2016009250A1 (en)2014-07-142014-07-14Methods and systems for transmitting data packets
US14/410,099US9602412B2 (en)2014-07-142014-07-14Methods and systems for transmitting data packets
US15/462,951US9876723B2 (en)2014-12-212017-03-20Methods and systems for evaluating network performance of an aggregated connection
US15/877,258US10511522B2 (en)2014-07-142018-01-22Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
US15/462,951ContinuationUS9876723B2 (en)2014-07-142017-03-20Methods and systems for evaluating network performance of an aggregated connection

Publications (2)

Publication NumberPublication Date
US20180316606A1 US20180316606A1 (en)2018-11-01
US10511522B2true US10511522B2 (en)2019-12-17

Family

ID=59236326

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US15/462,951ActiveUS9876723B2 (en)2014-07-142017-03-20Methods and systems for evaluating network performance of an aggregated connection
US15/877,258ActiveUS10511522B2 (en)2014-07-142018-01-22Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection

Family Applications Before (1)

Application NumberTitlePriority DateFiling Date
US15/462,951ActiveUS9876723B2 (en)2014-07-142017-03-20Methods and systems for evaluating network performance of an aggregated connection

Country Status (1)

CountryLink
US (2)US9876723B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US11916699B1 (en)*2021-09-142024-02-27Amazon Technologies, Inc.Backbone network traffic efficiency analysis
US12278704B2 (en)2023-04-132025-04-15Valens Semiconductor Ltd.USB over HDBaseT transmission using varying HDBaseT packet sizes

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US10749711B2 (en)2013-07-102020-08-18Nicira, Inc.Network-link method useful for a last-mile connectivity in an edge-gateway multipath system
US10454714B2 (en)2013-07-102019-10-22Nicira, Inc.Method and system of overlay flow control
GB2579759B (en)*2014-07-142022-07-13Pismo Labs Technology LtdMethods and systems for evaluating network performance of an aggregated connection
US10805219B2 (en)2014-07-142020-10-13Pismo Labs Technology LimitedMethods and systems for evaluating network performance of an aggregated connection
CN110337121B (en)*2014-07-142023-03-24柏思科技有限公司Method and system for evaluating network performance of aggregated connections
US10135789B2 (en)2015-04-132018-11-20Nicira, Inc.Method and system of establishing a virtual private network in a cloud service for branch networking
US10425382B2 (en)2015-04-132019-09-24Nicira, Inc.Method and system of a cloud-based multipath routing protocol
US10498652B2 (en)2015-04-132019-12-03Nicira, Inc.Method and system of application-aware routing with crowdsourcing
US20180197501A1 (en)*2017-01-062018-07-12Intel CorporationDisplay connection switching
US11706127B2 (en)2017-01-312023-07-18Vmware, Inc.High performance software-defined core network
US20200036624A1 (en)2017-01-312020-01-30The Mode GroupHigh performance software-defined core network
US20180219765A1 (en)2017-01-312018-08-02Waltz NetworksMethod and Apparatus for Network Traffic Control Optimization
US10992568B2 (en)2017-01-312021-04-27Vmware, Inc.High performance software-defined core network
US11252079B2 (en)2017-01-312022-02-15Vmware, Inc.High performance software-defined core network
US10778528B2 (en)2017-02-112020-09-15Nicira, Inc.Method and system of connecting to a multipath hub in a cluster
GB2575228B (en)*2017-03-202022-07-06Pismo Labs Technology LtdMethods and systems for evaluating network performance of an aggregated connection
US10523539B2 (en)2017-06-222019-12-31Nicira, Inc.Method and system of resiliency in cloud-delivered SD-WAN
US11115480B2 (en)2017-10-022021-09-07Vmware, Inc.Layer four optimization for a virtual network defined over public cloud
US10841131B2 (en)2017-10-022020-11-17Vmware, Inc.Distributed WAN security gateway
US10999100B2 (en)2017-10-022021-05-04Vmware, Inc.Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11223514B2 (en)2017-11-092022-01-11Nicira, Inc.Method and system of a dynamic high-availability mode based on current wide area network connectivity
US12126018B2 (en)2018-11-232024-10-22Research Institute Of Industrial Science & TechnologyPositive electrode active material for rechargeable lithium battery, production method therefor and rechargeable lithum battery comprising same
US10798617B1 (en)*2019-01-232020-10-06Cisco Technology, Inc.Providing low latency traffic segregation for mobile edge computing network environments
US11683714B2 (en)2019-01-292023-06-20Cisco Technology, Inc.Mobile edge computing with low latency traffic segregation within a PDN using dedicated bearers
US10524131B1 (en)*2019-02-042019-12-31Red Hat, Inc.Thwarting range extension attacks
US11171885B2 (en)2019-08-272021-11-09Vmware, Inc.Providing recommendations for implementing virtual networks
US11611507B2 (en)*2019-10-282023-03-21Vmware, Inc.Managing forwarding elements at edge nodes connected to a virtual network
US11394640B2 (en)2019-12-122022-07-19Vmware, Inc.Collecting and analyzing data regarding flows associated with DPI parameters
US11489783B2 (en)2019-12-122022-11-01Vmware, Inc.Performing deep packet inspection in a software defined wide area network
US11418997B2 (en)2020-01-242022-08-16Vmware, Inc.Using heart beats to monitor operational state of service classes of a QoS aware network link
US11245641B2 (en)2020-07-022022-02-08Vmware, Inc.Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN
US12035209B2 (en)2020-07-072024-07-09Metrolla Inc.Method for wireless event-driven everything-to-everything (X2X) payload delivery
US11363124B2 (en)2020-07-302022-06-14Vmware, Inc.Zero copy socket splicing
US11444865B2 (en)2020-11-172022-09-13Vmware, Inc.Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11575600B2 (en)2020-11-242023-02-07Vmware, Inc.Tunnel-less SD-WAN
US11929903B2 (en)2020-12-292024-03-12VMware LLCEmulating packet flows to assess network links for SD-WAN
US12218845B2 (en)2021-01-182025-02-04VMware LLCNetwork-aware load balancing
CN116783874A (en)2021-01-182023-09-19Vm维尔股份有限公司Network aware load balancing
US11979325B2 (en)2021-01-282024-05-07VMware LLCDynamic SD-WAN hub cluster scaling with machine learning
US12368676B2 (en)2021-04-292025-07-22VMware LLCMethods for micro-segmentation in SD-WAN for virtual networks
US11637768B2 (en)2021-05-032023-04-25Vmware, Inc.On demand routing mesh for routing packets through SD-WAN edge forwarding nodes in an SD-WAN
US12009987B2 (en)2021-05-032024-06-11VMware LLCMethods to support dynamic transit paths through hub clustering across branches in SD-WAN
US11729065B2 (en)2021-05-062023-08-15Vmware, Inc.Methods for application defined virtual network service among multiple transport in SD-WAN
US12250114B2 (en)2021-06-182025-03-11VMware LLCMethod and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of sub-types of resource elements in the public clouds
US11489720B1 (en)2021-06-182022-11-01Vmware, Inc.Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics
US12015536B2 (en)2021-06-182024-06-18VMware LLCMethod and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds
US12047282B2 (en)2021-07-222024-07-23VMware LLCMethods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN
US11375005B1 (en)2021-07-242022-06-28Vmware, Inc.High availability solutions for a secure access service edge application
US12267364B2 (en)2021-07-242025-04-01VMware LLCNetwork management services in a virtual network
US11943146B2 (en)2021-10-012024-03-26VMware LLCTraffic prioritization in SD-WAN
US12184557B2 (en)2022-01-042024-12-31VMware LLCExplicit congestion notification in a virtual environment
US12425395B2 (en)2022-01-152025-09-23VMware LLCMethod and system of securely adding an edge device operating in a public network to an SD-WAN
US11909815B2 (en)2022-06-062024-02-20VMware LLCRouting based on geolocation costs
US12166661B2 (en)2022-07-182024-12-10VMware LLCDNS-based GSLB-aware SD-WAN for low latency SaaS applications
US12316524B2 (en)2022-07-202025-05-27VMware LLCModifying an SD-wan based on flow metrics
US12057993B1 (en)2023-03-272024-08-06VMware LLCIdentifying and remediating anomalies in a self-healing network
US12034587B1 (en)2023-03-272024-07-09VMware LLCIdentifying and remediating anomalies in a self-healing network
US12425332B2 (en)2023-03-272025-09-23VMware LLCRemediating anomalies in a self-healing network
US12355655B2 (en)2023-08-162025-07-08VMware LLCForwarding packets in multi-regional large scale deployments with distributed gateways
US12261777B2 (en)2023-08-162025-03-25VMware LLCForwarding packets in multi-regional large scale deployments with distributed gateways
CN119583235A (en)*2024-11-252025-03-07江苏霆善文旅科技集团有限公司 A method for collecting interactive information based on online conferences

Citations (11)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20020018447A1 (en)2000-08-092002-02-14Nec CorporationMethod and system for routing packets over parallel links between neighbor nodes
US20030047850A1 (en)2001-09-072003-03-13Areaux Larry D.Molten metal pump and furnace for use therewith
US20080117834A1 (en)2006-11-202008-05-22Fujitsu LimitedCall server, call terminal, call system, transfer processing method, and program storage medium storing program thereof
CN101656637A (en)2009-09-112010-02-24中国科学院计算技术研究所 Virtual relay test device and method for network protocol
CN201616094U (en)2010-02-112010-10-27北京爱国者存储科技有限责任公司Host device with multiple connectors and protocol selection device
US20110096849A1 (en)2008-07-022011-04-28Stefan KubschOptimized selection of transmission protocol respecting thresholds
CA2808078A1 (en)2010-08-242012-03-01Exxonmobil Upstream Research CompanySystem and method for planning a well path
US20130111038A1 (en)2010-07-092013-05-02Attila Technologies, LlcTransparent Proxy Architecture for Multi-Path Data Connections
US20130201836A1 (en)*2010-09-302013-08-08British Telecommunications Public Limited CompanyData communication
US20140040442A1 (en)*2008-11-122014-02-06Patricio Humberto SaavedraSystem, apparatus and method for providing improved performance of aggregated/bonded network connections between remote sites
US20150281288A1 (en)*2014-03-282015-10-01Weigel Broadcasting Co.Channel bonding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP5138847B2 (en)*2001-08-312013-02-06富士通株式会社 Network system, network relay device, network relay monitoring device, and network operation method

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20020018447A1 (en)2000-08-092002-02-14Nec CorporationMethod and system for routing packets over parallel links between neighbor nodes
US20030047850A1 (en)2001-09-072003-03-13Areaux Larry D.Molten metal pump and furnace for use therewith
US20080117834A1 (en)2006-11-202008-05-22Fujitsu LimitedCall server, call terminal, call system, transfer processing method, and program storage medium storing program thereof
US20110096849A1 (en)2008-07-022011-04-28Stefan KubschOptimized selection of transmission protocol respecting thresholds
US20140040442A1 (en)*2008-11-122014-02-06Patricio Humberto SaavedraSystem, apparatus and method for providing improved performance of aggregated/bonded network connections between remote sites
CN101656637A (en)2009-09-112010-02-24中国科学院计算技术研究所 Virtual relay test device and method for network protocol
CN201616094U (en)2010-02-112010-10-27北京爱国者存储科技有限责任公司Host device with multiple connectors and protocol selection device
US20130111038A1 (en)2010-07-092013-05-02Attila Technologies, LlcTransparent Proxy Architecture for Multi-Path Data Connections
CA2808078A1 (en)2010-08-242012-03-01Exxonmobil Upstream Research CompanySystem and method for planning a well path
US20130201836A1 (en)*2010-09-302013-08-08British Telecommunications Public Limited CompanyData communication
US20150281288A1 (en)*2014-03-282015-10-01Weigel Broadcasting Co.Channel bonding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
International Search Report in International Application No. PCT/IB2014/063084, dated Apr. 20, 2015.
Written Opinion of the international Searching Authority in International Application No. PCT/IB2014/063084, dated Apr. 20, 2015.

Cited By (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US11916699B1 (en)*2021-09-142024-02-27Amazon Technologies, Inc.Backbone network traffic efficiency analysis
US12278704B2 (en)2023-04-132025-04-15Valens Semiconductor Ltd.USB over HDBaseT transmission using varying HDBaseT packet sizes
US12284038B2 (en)2023-04-132025-04-22Valens Semiconductor Ltd.Uneven segmentation of data packets to reduce retransmission latency

Also Published As

Publication numberPublication date
US20170195233A1 (en)2017-07-06
US20180316606A1 (en)2018-11-01
US9876723B2 (en)2018-01-23

Similar Documents

PublicationPublication DateTitle
US10511522B2 (en)Methods and systems for evaluating network performance of and transmitting packets through an aggregated connection
US9602412B2 (en)Methods and systems for transmitting data packets
US11770309B2 (en)On-demand probing for quality of experience metrics
US11799686B2 (en)Methods and systems for transmitting information packets through tunnel groups at a network node
EP3586489B1 (en)Methods and network elements for multi-connectivity control
US20160285977A1 (en)Methods and systems for transmitting packets through an aggregated connection
US11722391B2 (en)Dynamic prediction and management of application service level agreements
US10015733B2 (en)Methods and systems for transmitting and receiving data
US10873477B2 (en)Methods and systems for transmitting information packets through tunnel groups at a network node
US20190182146A1 (en)Improved Resource Usage In A Multipath Network
EP3281380A1 (en)Method and system for the scheduling of packets in a bundling scenario based on tcp tunnels and native tcp information
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
US20250301528A1 (en)Directional sd-wan transport/stream blackout/brownout classification
HK40015671A (en)Methods and systems for evaluating network performance of an aggregated connection
HK40015671B (en)Methods and systems for evaluating network performance of an aggregated connection
HK40008206B (en)Methods and systems for evaluating network performance of an aggregated connection
HK40008206A (en)Methods and systems for evaluating network performance of an aggregated connection
HK40010631A (en)Methods and systems for evaluating network performance of an aggregated connection
HK1231291A1 (en)Methods and systems for transmitting data packets
HK40010631B (en)Methods and systems for evaluating network performance of an aggregated connection
HK40026998A (en)Method for arranging node in network environment and node
HK40026998B (en)Method for arranging node in network environment and node
HK1231291B (en)Methods and systems for transmitting data packets

Legal Events

DateCodeTitleDescription
FEPPFee payment procedure

Free format text:ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

FEPPFee payment procedure

Free format text:ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

ASAssignment

Owner name:PISMO LABS TECHNOLOGY LIMITED, HONG KONG

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SUNG, PATRICK HO WAI;LEUNG, WAN CHUN;CHAU, KIT WAI;AND OTHERS;SIGNING DATES FROM 20180410 TO 20180411;REEL/FRAME:046221/0001

STPPInformation on status: patent application and granting procedure in general

Free format text:NON FINAL ACTION MAILED

STPPInformation on status: patent application and granting procedure in general

Free format text:RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPPInformation on status: patent application and granting procedure in general

Free format text:NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPPInformation on status: patent application and granting procedure in general

Free format text:PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCFInformation on status: patent grant

Free format text:PATENTED CASE

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment:4


[8]ページ先頭

©2009-2025 Movatter.jp