System and method for transmitting data over unreliable connections

JP2026041748A5Pending Publication Date: 2026-03-17DEJERO LABS
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-11-12
Publication Date
2026-03-17

AI Technical Summary

Technical Problem

Existing data transmission methods over unreliable connections, such as those with packet loss, latency spikes, or temporary connectivity loss, incur high latency, excessive bandwidth usage, and resource wastage due to over-commitment, leading to inefficient communication.

Method used

A mixed connection system that utilizes Probabilistic Forward Loss Correction (PFLC) to monitor communication flows, track connection characteristics, and efficiently route data packets through a hierarchical representation of connections, balancing reliability and bandwidth usage by grouping connections based on their properties and adjusting transmission strategies to achieve a target probability threshold.

Benefits of technology

This approach reduces computational overhead, improves latency and reliability, and optimizes resource usage, especially in constrained environments, by efficiently utilizing both reliable and unreliable connections to achieve a desired level of reliability without over-committing resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A network router computing device for communicating data over untrusted connections is provided. [Solution] A method for a network router computing device to monitor communication characteristics and group connections into various hierarchies based on the communication reliability data, and when a new packet is communicated, the grouped connections are aggregated and utilized to meet a target transmission reliability probability (e.g., a target value or range of values).
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is directed to a "System and Method for Data Transmission Over Unreliable Connections (SYS)." TEMS AND METHODS FOR DATA TRANSMISSION A CROSS UNRELIABLE CONNECTIONS" in May 2020. No. 63 / 649, filed on May 29, 2013, which is incorporated herein by reference in its entirety. Nonprovisional application No. 032,180 claiming all benefit thereof, including priority rights. be.

[0002] This application is related to "System and Method for Packet Transmission" ION SYSTEM AND METHOD)” was published on December 21, 2017. No. 16 / 482,972, filed on Dec. 16, 2007, which is incorporated herein by reference in its entirety. This concerns the issue. Technical Field

[0003] FIELD Embodiments of the present disclosure generally relate to the field of data networking, and more particularly In particular, embodiments provide devices, systems, and methods for communicating data over untrusted connections. This document relates to the method and method of making such a claim. [Background technology]

[0004] If the network is unreliable (packet loss, latency spikes, or complete in terms of a significant (but temporary) loss of connectivity), ARQ (Automatic Repeat Request tomatic repeat request)) or SMPTE-2022-7( Use solutions such as sending duplicate packets over multiple channels to determine the overall impact on transmission. can be reduced.

[0005] For example, with ARQ, packets sent over unreliable connections are often lost. / Delayed, so retransmitted (on the same connection, or on a different connection in the case of a mixed system) This comes at a latency cost and can be extremely disruptive to your application. With SMPTE-2022-7, every packet is replicated. Since the signal is transmitted over multiple channels, the cost is in bandwidth usage (six Using a connection is equal to six times the bandwidth requirement). Summary of the Invention

[0006] A mixed connection system can take advantage of the strengths and weaknesses of the connections available to the system. This allows for more advanced techniques for handling untrusted connections. This allows the mixed connection system to provide a more reliable connection overall. For example, "Apparatus and method for characterizing and optimizing multiple simultaneous real-time data connections" DEVICE AND METHOD FOR CHARACTERIZATION AND OPTIMIZATION OF MULTIPLE SIMULTANEO The entire article was titled "US REAL-TIME DATA CONNECTIONS" No. 14 / 360,372 (U.S. Pat. No. US935,535), which is incorporated herein by reference. 7427) is a combination of high latency, high throughput satellite connectivity and low latency When combined with a low-throughput terrestrial connection, the overall latency of the system Provides ARQ for satellite connections using terrestrial connections with little impact on performance and reliability. It can be provided.

[0007] Other mixed systems use heuristics or techniques such as machine learning to predict when a connection becomes unreliable and then stop using the connection just before that transition occurs This may be the case.

[0008] Efficiency and bandwidth improvements that can lead to improved cost, reliability, and latency management Alternative approaches that may improve bandwidth are described in some embodiments. The alternative is to make the connection either completely reliable or completely unreliable. It is intended for systems that are configured to recognize that the Therefore, the system must be designed to efficiently obtain some benefit from unreliable connections. This system monitors communication flows over a period of time. or receive communication characteristics data from third-party systems and use this information It is used to determine how data is communicated (e.g., how packets are sent or to coordinate, schedule, or control the network connections That information is efficiently tracked in data structures that are maintained over time. This reduces the total number of computational steps required when making a routing decision ( Each computational step during runtime impacts performance and, when aggregated, can send large numbers of packets. can be significant for highly scaled systems).

[0009] This technique uses physical data routers, or the routing of data packet communications. The technical implementation may be implemented in the form of other networking devices that are configured to control Other possible types of networking equipment include: It can be a gateway, switch, bridge, repeater, hub, or access point. It can be done.

[0010] The device includes one or more processors operating in conjunction with computer memory. Thus, the one or more processors may be coupled to a data storage device. and machine-interpretable instructions (e.g., that, when executed by a computer processor, software that causes a processor to perform the methods described herein in various embodiments. Non-transitory computer-readable media (e.g., diskettes, solid-state storage) that store Non-transitory computer-readable media are data packets. or to modify the routing path for communicating the data stream. It may also include logic using rules or stored routing tables. This can be done.

[0011] The approach described herein is based on "Probabilistic Forward Loss Correction" (Probabilistic F This is called Forward Loss Correction (PFLC). This is an extension of the technology previously described for mixed connection systems. Uses the available connection properties to determine the connection state of the application flow being handled. It involves improving latency and reliability.

[0012] This evolved approach is adapted to improve the overall efficiency of communication resource usage; This is especially true in areas where communication resources are constrained (e.g., limited routes, e.g., rural locations), The communication resource is congested (e.g., many simultaneous users, e.g., a sports complex), or Cost must be considered (e.g., availability at various levels of cost and reliability). connections that can be used, e.g., using radio or microwave frequencies with limited frequency range or band This is especially important in situations where there is a satellite connection.

[0013] A technical advantage of the techniques described herein is the reduction in data communication (e.g., transmission / reception). It is a more efficient target setting compared to other technical protocols that target packet reliability. This means that it is possible to achieve the following.

[0014] In terms of reliability, various embodiments may be described, such as by setting a reliability threshold, range, or Redundant connections are utilized to establish a "Goldilocks" level of reliability. It may be important to maintain a "dillocks" level. The application flow unnecessarily uses resources to achieve the desired reliability target level, For example, achieving a level of reliability without over-committing to bandwidth. Previous mixed methods challenges include using excessive resources to achieve the desired reliability. (e.g., SMPTE-2022-7), excessive latency (e.g., simple ARQ ), or excessive loss (for example, blindly using unreliable connections and causing applications (requiring the application to handle lost packets).

[0015] Over-commitment of resources may result in reliable transmission for certain communications, but , which may be wasteful in terms of overall resources and may prevent communication or its This may constrain other communications or increase overall communications costs. The example of overinjection in , even though the specification only required a 95% success rate, To repeatedly send packets over a reliable connection, at least 99.999% of the time Another aspect of waste is the use of network resources. The less reliable / unreliable the connection, the less it will be used. For example, a connection that transmits only 65% ​​reliably may be relevant in other implementations. Some messages may be completely ignored, which is a waste of available communication resources.

[0016] The techniques described herein may be used in conjunction with other corrective protocols or techniques for data packet transmission. methods, such as best-effort transmission (e.g., User Datagram Protocol (UPD)) UDP and stream-based signaling Reliable transmission protocols (e.g., Transmission Control Protocol) It can be used in conjunction with TCP The device operates at different layers in the OSI protocol stack, e.g., the application layer, the transaction layer, at the transport layer, network layer, data link layer, or physical network layer Communication can be controlled.

[0017] In some embodiments, a network controller device (e.g., a router) is described. The apparatus includes a processor coupled to computer memory and data storage. The processor: receives one or more data indicative of the monitored network communication characteristics. receiving a set of data in a data structure stored on a data storage device; Maintain a hierarchical representation of multiple connections separated into groups, where each group represents the connections within that group. Regarding the successful communication of data packets over one or more of the multiple connections residing in the and a plurality of data packets, as established based on at least a minimum probability of association; and controls communication between the data processor and the network, and transmits this control over one or more of the multiple connections. A data packet is transmitted at least once, and as a result of multiple communications, a data packet is The transmission of packets is configured to satisfy a target probability threshold.

[0018] In another aspect, the plurality of groups are organized into a plurality of corresponding tiers, each tier comprising: Data packets through the corresponding connection of one of the hierarchical layers to achieve the target probability threshold represents the number of times that a message may have to be transmitted.

[0019] In another aspect, the plurality of communications may be retransmitted over a connection of one of the plurality of layers. The number of retransmissions is determined to achieve the target probability threshold for the corresponding layer. The data packets may have to be transmitted through the corresponding connections of the hierarchy In an alternative embodiment, the network reliability is temporarily reduced. Any retransmission losses due to on the same connection but at different times (i.e., separate Retransmissions may be performed for each burst.

[0020] In another aspect, the retransmission is performed over a different connection in the hierarchy.

[0021] In another aspect, the plurality of communications includes retransmissions over connections at different levels of the plurality of levels.

[0022] In another aspect, an additional group may be added to connections for which there is insufficient data to assess trustworthiness. In contrast, it is an established indeterminate group.

[0023] In another aspect, membership in this indeterminate group may be used to classify connections into multiple groups. It is periodically revised to ensure

[0024] In another aspect, multiple group connections may be configured to report connections with outdated or unreliable connection data. be monitored periodically to shift membership to indeterminate groups showing increased sexuality. .

[0025] In another aspect, the uncertainty group may be configured to generate data pairs using seeded reliability probabilities. It is used for packet communication.

[0026] In another aspect, the seeded reliability probability is based on monitored network communication characteristics. The system is adjusted periodically based on the current situation.

[0027] In another aspect, connections that have required more than a threshold number of transmissions or retransmissions are placed in an indeterminate group. Move to a group.

[0028] In another aspect, the processor may define a data packet over a connection in the uncertain group. The periodic transmission is further configured to reduce overall system inefficiency. It incorporates a back-off timer to reduce inefficiency.

[0029] In the figures, embodiments are shown by way of example. It is expressly understood that the information contained herein is provided solely as a guide and aid to understanding.

[0030] Embodiments will now be described, by way of example only, with reference to the accompanying drawings, in which: [Brief explanation of the drawings]

[0031] [Figure 1A] FIG. 1A is a data flow diagram illustrating the four components that comprise the methodology described herein. [Figure 1B] FIG. 1B is an exemplary block diagram of a communication gateway device according to some embodiments. [Figure 1C] FIG. 1C is a schematic diagram of an exemplary system describing an alternative approach that is less efficient than some of the approaches described herein in various embodiments. [Figure 2] FIG. 2 is a system-level diagram illustrating an exemplary embodiment of a scheduler mechanism that interoperates with other controller components and a flow classification engine, according to some embodiments. [Figure 3] FIG. 3 is a diagram illustrating a method for generating window sizes and ensuring sample validity, according to some embodiments. [Figure 4] FIG. 4 is a flow diagram illustrating a grouping technique of some embodiments described herein. [Figure 5] FIG. 5 illustrates an exemplary implementation according to some embodiments. [Figure 6] FIG. 6 is a diagram illustrating state transitions between three states according to some embodiments. [Figure 7] FIG. 7 is an exemplary schematic diagram of a coordinated approach to grouping connections, according to some embodiments. [Figure 8] FIG. 8 is a block schematic diagram of an exemplary computing device, according to some embodiments. [Figure 9]FIG. 9 is a diagram illustrating a physical computer server rack, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0032] FIG. 1A is a data flow diagram illustrating the four components comprising the methodology described herein. These components are described as logic units and are not hardware components. Software (e.g., electronic circuits, printed circuit boards, field programmable gate arrays) (b) or may be implemented in the form of software or embedded firmware. As described in various embodiments herein, some or all of the components may be ,physical network communication devices, e.g., routers, gateways, switches, bridges, It can be built into a repeater, hub, or access point.

[0033] In other embodiments, some or all of the components may be controlled, e.g., routing, etc. It can be integrated as a corresponding network interface controller on the server. The output of the device can be a data structure representing instructions for controlling routing, e.g. Routing that is updated periodically or continuously to control communications as described in the It may also be a writing table.

[0034] Application Flow Identification 001 specifically deals with determining flow reliability requirements In some embodiments, this is done using deep packet inspection. Deep Packet Inspection (DPI), coded rules and heuristics may include techniques such as ticks, machine learning, or user-configured hints. For example, VoIP (Voice over Internet Protocol) An application flow may require 99% reliability for its packets. However, a temperature sensor reporting periodic observations has an 80% reliability for its packets. It is possible that they may not even request it.

[0035] The purpose of Connectivity Measurement and Observation 002 is to measure the current and historical reliability of available connectivity. For example, in some embodiments, this may involve determining and tracking packet loss. Loss measurement and history tracking, monitoring external metrics such as wireless signal strength, user / administrator This may involve taking hints into account or machine learning techniques.

[0036] Groupings of connections 003 are those from the past, present, or predicted future. Group connections based on their properties. For example, if you have four connections, For example, if there are two connections with 10% loss and two connections with 10% loss, A suitable embodiment would be to put the first two connections into one group and the remaining two connections into another group. Another exemplary embodiment may be similar to any other connection. A connection that does not have a group ID may be placed in its own group.

[0037] Scheduling flows to connection groups 4 allows efficient use of connections while scheduling flows. It is intended to be done in an intelligent manner that satisfies the requirements of the law. Using the example values ​​in, one possible scheduling combination is: For each VoIP packet, the system is Transmit once on either or twice on connections in a 10% loss group. Assuming that the loss rates are independent and have uniform distributions, Either option would meet or exceed the target reliability of 99%. The system transmits the temperature sensor packet once over any of the available connections. Any connection on its own will achieve the 80% reliability target. or exceed.

[0038] The assumptions of independence and / or uniform distribution are not necessary in all embodiments. For example, there are other techniques to overcome non-uniform distribution and correlation loss rates. This could be done, for example, by tracking correlations or interdependencies to identify unreliable connections. Intentionally use combinations of low correlations or connections from different hierarchies. For example:

[0039] For example, statistical dependencies can be calculated (either locally or using a central system). Monitor (e.g., track historical variations) or anticipate dependencies. The type of connection that is likely to be Even if they are connected to the same tower, they may be using links from the same internet tower. Different carriers that are compatible or otherwise do not interact (e.g., Te to flag two modems (derived from ITU-R and Bell) A configured background computational process may be instantiated.

[0040] Connections can also be evaluated using, for example, header information, base station information, connection identifiers, etc. For example, non-traditional resources can be made available on an as-needed or priority basis. There may be connections, which may be of a certain type (e.g., dedicated channels, or priority Defense and first responder with first access request capability The information is available to the Ponder's customers.

[0041] In another embodiment, correlations or interdependencies may be known but cannot be avoided (e.g., With only a small number of connections available, there is no correlation or interdependence between the connections that are enabled. In cases where the reliability of the connection is high, the method may strengthen the discount factor for the reliability of the connection, or Another embodiment involves simply treating a reliability "tier" of a connection as a lower tier. For example, connection A (layer 3) can be combined with connection B (layer 3). If they are used for routing and there is an interdependent correlation between them, Either A or B can be logically moved during routing and treated as layer 4. So the packet is sent four times instead of three (e.g., twice on connection A and twice on connection B). You may do so.

[0042] The hierarchy is stored in a layered representation on the data storage. This representation is a representation of the hierarchy and its groups. A data field that ties membership in a group to each specific identifier of a connection. During operation of the system, the data values ​​may be used in conjunction with the system To control certain system behaviors, such as routing decisions for data packets The hierarchical representation can be used to represent the relationship between the reliability of different connections and the number of connections. Once this information is available, it can be updated periodically or dynamically over time. In an embodiment, the connections are also assigned state representation values ​​that are utilized in the state machine. This state machine transitions connections through different "states" to ensure reliable communication. Automatically promotes or demotes a system from states such as Trusted, Untrusted, Indeterminate, and other intermediate states. These states can be transitioned using automatic trigger conditions, and the associated Use linked list items or other types of data adapted for automatic state transitions It can be logically represented through the use of objects. When selecting the communication interface to use to communicate data packets, It can be used as part of the logical control flow of

[0043] As described in various embodiments herein, an important consideration is the target probability threshold. Another countervailing consideration is bandwidth efficiency (e.g., "sufficient percentage" of communication). The importance of practical constraints on guaranteeing "goodput" The mechanisms described herein are used to automatically balance these considerations. Considering the limited network resources, It can provide a technically useful mechanism for improving the overall reliability of transmission.

[0044] Furthermore, the techniques described herein may be used in cases where the reliability of the connection is inconsistent (e.g., Satellite connections whose quality varies with cloud cover or have unpredictable usage patterns This is especially useful for congested networks, where a bunch of unreliable connections can be used together. The target probability of transmission may be achieved through retransmission. Maintaining an adaptive data structure that layers the succession and tracks changes over time is computationally easy. and the overall calculations required to determine the reliability of individual connections. It is useful to reduce overhead.

[0045] Routing systems that utilize layered connections are e.g. As the system moves through the geospatial domain (e.g., when a routing system is installed in a vehicle) or when in a stationary position but connected to For communication stations that are subject to large fluctuations in transmission quality, when conditions change (e.g., when infrastructure Connected by local communication stations in developing countries that are not yet equipped, or by satellite-based constellations reliability is provided and its reliability is verified over time as the orbital equipment passes through a defined path overhead. The use of unreliable connections reduces transmission efficiency. Routing through a hierarchical representation for routing control, albeit at the expense of When packets are repeatedly retransmitted, based on automatic probabilistic modeling of the networking system, It becomes feasible.

[0046] A sophisticated mechanism to reduce the likelihood of violation of a "goodput" percentage threshold limits the number of transmissions. If the number of layers corresponds to the number of transmissions, this is called "goodput." This means that the percentage threshold can simply be translated into the highest tier before the connection is no longer in use. The "goodput" percentage threshold can be set (e.g., on the user interface or by the target transmission probability where this is not achievable), you can vary the number of tiers available to achieve better reliability and bandwidth. In some embodiments, the technical tradeoff between bandwidth utilization efficiency and In this case, the "goodput" percentage threshold is manually set (e.g., by the network administrator using a slider) In other embodiments, the "goodput" percentage threshold is adjusted based on a set of stored logic values. The system automatically adjusts the threshold based on the management rules. This can be applied to communications, e.g., communications marked as urgent are those marked as very low may be sent despite a low goodput rate, and vice versa.

[0047] To achieve the target transmission probability of success, connections through different tiers, e.g., tier 2 and Layer 2 and Layer 3 transmissions can be mixed. Grouping into hierarchies can result in too many calculations when making routing decisions (e.g. Connections can be easily mixed without each required calculation slowing down the system's performance. It is useful in that it achieves approximately the desired probability.

[0048] The layered representation may also include unassigned connections awaiting layer assignment; In some embodiments, all of these connections are associated with a state representation, e.g., undetermined. or in another embodiment, all of these connections are designated as untrusted. In some embodiments, the characteristics of the connections are automatically examined to determine which layer they are available for use on. Data is used to determine whether a layer can be promoted or whether a state transition can occur. A data packet or a verification packet is periodically transmitted over the unallocated connection.

[0049] The use of unallocated connections is, for example, necessary to achieve a target threshold without violating "goodput." is used in overflow situations where there are not enough connections in the hierarchy, or when the overflow situation It can be used to check for unassigned connections during normal use on a regular basis without Unassigned connections can be updated over time as transmission performance observations become available. A seeded reliability probability can be assigned to a connection. Each can be associated with a timer that is used to check for unallocated connections. Each time a connection is validated, the timer is reset so that the connection cannot be revalidated until a certain period of time has passed. , which is composed of:

[0050] Particular embodiments will have different approaches for each of 001-004. , which will be subsequently described in more detail.

[0051] FIG. 1B illustrates a mixed connection assembly system 100, which is an improved Scheduling techniques are implemented on the transmit portion of the system, along with packet ordering. It is configured to utilize a buffering system on the receiving end. The components in the system are, in one embodiment, configured to interoperate with each other. In another embodiment, the hardware components are discrete components. Two or more components are referred to as a specific hardware component (e.g., a component) rather than a component. The processor may be implemented on a single computer chip (eg, a computer chip that performs the functions of two or more of the components).

[0052] In some embodiments, the hardware components are distributed across the same platform (e.g., The system 100 resides on the same printed circuit board, making it portable and suitable for data center / field use. It is a single device that can be connected to a portable device (e.g., a rugged mobile transmitter) or the like. In another embodiment, the components are dispersed and do not all need to be closely spaced. , rather, electronic communication through remote communication (e.g., processing and control are performed locally) by components residing in a distributed resource environment (e.g., cloud) rather than by (to be implemented).

[0053] Providing mixed connectivity is a matter of consideration, in detail, of signal quality, network availability, quality network Mobile scenarios where work is not optimal (e.g., professional news gathering / video production) may take place in places without a strong network infrastructure) Thus, in some embodiments, the devices described herein may be remote or is a rugged network controller device adapted for operation in mobile scenarios, e.g. For example, it can be carried by a person (for example, worn in a backpack by a journalist or technician), or carried on a cart. Portable (e.g., pushed around on a media cart) or vehicle-mounted (e.g., (e.g., attached to a media van, truck, boat, helicopter, or aircraft) It can be said that.

[0054] Alternatively, the device may be connected to a communications hub or other terminal with connectivity to a further termination point. For example, in this example, the device may be located in a centralized communications facility. These communications facilities may be located, coupled, or permanently located, for example, at communications relay sites. (e.g., satellite stations, relay transmitting stations, broadcast translation stations, rebroadcasting stations, relay stations, complementary stations) It can be a television station, a radio station, a data communication station, a personal computer, a mobile device, etc. It is capable of coordinating communications over multiple different channels to various endpoints.

[0055] Multiple different data representing one or more networks (or network channels) Data connections 106 (e.g., "paths") are shown, including connection 1, connection 2, ..., connection N. Multiple data connections / paths through a single network, or just one There may be multiple data connections that may use multiple networks. be.

[0056] These data connections can include various types of technology, each with different communication capabilities. Reception conditions, e.g., available transmission power, array architecture, polarization, Communications situations with multipath propagation mechanisms, spectral interference, frequency ranges, modulations, etc. may be encountered. Accordingly, all connections may have different levels of communication reliability.

[0057] The system 100 includes multiple paths / connections 102 that are used to request and receive data. Various exit points 102, 110, or applications that do not need to have information about 06 application (e.g., the endpoints 102, 110 may be independent of the path or connection 106) The received data may be configured to communicate to a , so that the original transmission can be reconstructed from the contributions of the different paths / connections 106. (An example usage scenario could be the playback of a video by a receiver, The receiver is designed to plug into a server rack in a data center facility, and can be used to (It integrates with the transmission infrastructure and provides improved networking capabilities.)

[0058] The system 100 receives input (data flow) from a source termination point 102; Improved data packet delivery scheduling over various connections 106 and then , and then transmits the data to the other end of the system prior to transmission to the destination endpoint application 110. The system 100 sequences the data packets at 108. In doing so, the system 100 configured to increase the bandwidth to approach the sum of the maximum bandwidths of the various available paths. Compared to using a single connection, the system 100 also provides improved reliability. This provides a very sensitive time-sensitive scenario, e.g. This can be an important consideration when gathering news at live events. In events with high signal congestion (e.g., sporting events), or one or more There may be unreliability through the channel (e.g., news reports after a natural disaster). .

[0059] Multiple connections can be combined to act as a single connection, using different techniques. , especially by allowing the same packet to be sent over multiple connections, thus facilitating routing continuity. It can be carried.

[0060] In various embodiments, both the scheduler 160 and the sequencer 162 are cloud-based. From the computing implementation or at the end point (when the data is before being consumed by the application), or various combinations thereof, can be provided.

[0061] The system 100 provides performance, best latency, best throughput, and lowest jitter (two the variation in latency on packet flows between two systems, the cost of the connection, and the The connection combinations are adjusted to optimize or prioritize the (e.g., information that the transmission (data flow) is of content type X) If the system 100 has a data It may be configured to use only data connections, while content of type Y may be configured to use only data connections. A wider combination of connections may be allowed (or a combination of data connections may be used). (These requirements may require a larger net capacity than can be achieved only with a single system.)

[0062] The above adjustments may be provided to the system generally or may be applied to each flow (or flows) A set of points, either a location, a start point, or an end point, or a combination thereof Owner of the combination, transmission time, set of available communication links, security required for transmission, etc. may be provided specifically for

[0063] The system 100 generally comprises a gateway 104, 108 that receives TCP traffic (or or UDP traffic, or a combination of TCP and UDP traffic , or any type of general Internet Protocol (IP) traffic) 160 and sequencer 162 to handle the It may be directional, although in some embodiments only one gateway is required. It may be required.

[0064] The system 100 may be used, for example, for failover (e.g., for disaster recovery) or to replace an existing of your Internet connection (e.g., a VoIP phone system or a corporate connection to the Web) As a complement, it may be used in various scenarios, whereby additional networks (or or route) are seamlessly added to replace the dropped primary Internet connection. or tying saturated primary Internet connections to more expensive networks. In a failover situation, many Coordinated failures across multiple communication channels (e.g., large-scale denial of service attacks or large-scale There may be a large solar / geomagnetic storm, and the system 100 may then It may be required to use the available communication resources efficiently. This is because there is a shortage of gas.

[0065] Another use of the system 100 is to redirect traffic to other data connections with different attributes. By enabling offloading, the high costs (often sank costs) of The goal of this standard is to provide a means to maximize the use of reliable data connections.

[0066] In some embodiments, the system 100 may transmit data over multiple network connections. A network gateway configured to route the flow.

[0067] Figure 1B shows the buffer manager 150 and the operations engine 152. , a connection controller 154, a flow classification engine 156 (responsible for identifying and classifying flows) ), a scheduler 160, a sequencer 162, and a network characteristic monitoring unit 16 1, two gateways 104 coupled by N data connections 106; 108, each gateway serving a particular endpoint. 102, 110. Reference letters A and B denote the two gateways 104 and and 108 are used to distinguish between their respective components.

[0068] Each gateway 104, 108 transmits data over multiple network connections. configured to include multiple network interfaces, and (e.g., (including hardware, software, or embedded firmware) To monitor the time-varying network transmission characteristics of multiple network connections; Analyzing at least one packet of the data flow of packets, Identify the data flow class and let the data flow class know a little about the data flow. Defines at least one network interface requirement, or else and data flow classes, and time-varying nets Routes packets of a data flow through multiple network connections based on network transmission characteristics. and a processor configured to:

[0069] The buffer manager 150 manages traffic (individual flows and A game adapted to more efficiently manage multiple simultaneous flows (both in combination with In some embodiments, the buffer is configured to be set up within the gateway. Buffer manager 150 is a separate processor. The buffer 150 is configured to perform, among other activities, buffer management 150. The computational unit provided by the processor.

[0070] The operations engine 152 processes the received input data set (e.g., one or more deterministic A user / client configured to apply a method and / or logical operation, destination / server, connection (e.g., latency, throughput, cost, jitter, reliability), Row type / request (e.g. FTP vs. HTTP vs. streaming video) Inform the system about the constraints that will be applied to mixed connections for each.

[0071] For example, the Operations Engine 152, in one instance, The method may be configured to restrict certain types of flows to specific connections or sets of data connections based on the Although different users or flow types may have different requirements for reliability and low latency, Different conditions, triggers, and methods may be more important, e.g. It may be utilized in response to one or more components.

[0072] The operations engine 152 may be the same as or different from the buffer manager 150, for example. or may be provided on different processors.

[0073] The operations engine 152 controls the routing on the N data connections 106. Generate, apply, or modify one or more sets of rules that determine the logical operations to be performed on the control It may be configured to operate or be used otherwise.

[0074] The flow classification engine 156 is configured to classify the packets received by the multipath gateway 104 for transmission. configured to evaluate each data flow received and to determine the traffic being transmitted. A flow classification procedure that determines the type of traffic and its requirements if they are not already known. In some embodiments, the method is configured to apply a deep packet inspection method. In another embodiment, the evaluation is performed by a discovery technique. It is based on a method or a data flow that is marked or tagged at the time of production. In an embodiment, the evaluation is based on rules provided by the user / administrator of the system. In another embodiment, a combination of methods is used.

[0075] The flow classification engine 156 interacts with one or more network interfaces. and may be implemented using electronic circuitry or a processor. .

[0076] The scheduler 160 determines which packets (and their amount of redundancy) to send down which connections 106. The scheduler 1 is configured to make a decision as to whether it is desirable to transmit the 60 is an improved Quality of Service (QoS) The scheduler 160 may be thought of as a series of committed decisions. The logic gate may include:

[0077] Scheduler 160 may, in some embodiments, be implemented by one or more processors or is a standalone chip or configured circuit, such as a comparator circuit or FP It is implemented using GA.

[0078] A typical QoS engine manages a single connection and the QoS engine (or in this case, The scheduler 160 may be configured to perform flow identification and classification, and the final result is The result is that the QoS engine reorders packets before sending them on a connection. This is what we should do.

[0079] In contrast, the scheduler 160 performs flow identification, classification, and packet reordering. While being configured to perform the above, the scheduler 160 of some embodiments may also improve to give the data flow specific transmission characteristics and / or to the user / administrator Therefore, the flow satisfies the policy set for it (or defined in various rules). to make decisions about which connection to send packets on. The scheduler 160 is further configured to, for example, The network interface may then be configured to modify the network characteristics, which may then send a set of control signals to the network interface. You can disable them by switching them on or off or by routing data The control signal is used to indicate the desired routing. Specific characteristics, e.g., packet timing, network performance for specific types of traffic It may also be a command set indicating reservation of a network interface.

[0080] For example, consider two connections with the following properties:

[0081] Connection 1: 1ms round trip time (RTT), estimated bandwidth of 0.5Mbps; Call

[0082] Connection 2: 30ms RTT, estimated bandwidth of 10Mbps.

[0083] Scheduler 160 assigns connection 1 to the Domain Name System (Domain Name System) e System (DNS) traffic (small packets, low latency) only In this example, there is so much DNS traffic that the capacity of connection 1 is reached. There may be a traffic jam, i.e., the scheduler 160 may allocate traffic to connection 2. However, the scheduler 160 may be configured to allow other decisions. It may do so selectively based on a set of parameters or factors (e.g., if the scheduler 160 If configured to provide fair decisions, the scheduler 160 traffic from IP addresses that already send significant DNS traffic to may be configured to overflow).

[0084] The scheduler 160 may be implemented, for example, by one or more processors or hardware. based on a process or methodology that operates in conjunction with a similar implementation (e.g., FPGA) in The device may be configured to process the decision.

[0085] The scheduler 160 operates under the control of the operations engine 152. The data stream may be decomposed into data packets, and then the data packets may be Routing packets into a buffer (managed by the buffer manager 150) These buffers optimize packet delivery while taking into account the characteristics of the data connection. It attempts to provide data packets to the data connection according to the rules.

[0086] In one embodiment, the scheduler 160 determines how many times a packet (or a portion thereof) is sent, and It accepts a stratum number as a parameter when determining which connection it should be sent on. The scheduler 160 is a data communication scheduler that sends data by adding header information. by adding it to a reference data structure in computer memory or data storage. Control transmission over stored routing tables or routing policies The method is adapted to control the forwarding of data packets by

[0087] Routing tables or routing policies are used in various embodiments of this specification. The routing table may be updated periodically or continuously as described in The routing policy may, in some embodiments, be non-transient and machine-readable. Stored as machine-interpretable instructions resident on a medium (e.g., as an article of manufacture) Updates are performed by repeating transmissions of data packets over connections of questionable reliability. The routing table includes adaptation with respect to achieving the minimum probability of data loss. The scheduler 160 or router data table that enumerates routes to the network destinations It can be a table, can contain a variety of metrics, and can be used across a variety of networks. The network topology may be based on the sensed topology of the network connections.

[0088] As described herein, discovery techniques can also be used to identify new interfaces with unknown reliability. face, or trustworthiness (e.g., from trusted to untrustworthy or vice versa) It can also be used to adapt known interfaces to changes. A routing table is illustratively a data structure for controlling the routing of packets to their destinations. or network / next hop information stored as linked data components It can include associations.

[0089] The routing table can be used to generate a forwarding table, which Compressed or pre-compiled files that optimize hardware storage and backup It can provide a controlled approach and in some instances The routing / forwarding table separates and forwards the packets based on the intermediate network destination address ( For example, IPv4, IPv6), netmask, gateway, interface address This may include, for example, the following:

[0090] Mixed connection systems can utilize advanced techniques to handle unreliable connections106. This takes advantage of the strengths of the available connections in a way that provides a more reliable connection overall. For example, "multiple simultaneous real-time DEVICE AND METHODS FOR CHARACTERIZING AND OPTIMIZING DATA CONNECTIONS D FOR CHARACTERIZATION AND OPTIMIZATION OF MULTIPLE SIMULTANEOUS REAL-TIME DATA No. 6,239,693, entitled "CONNECTIONS WITH METHODS OF USE ... As described in application Ser. No. 14 / 360,372 (granted as US9357427), A low-latency, high-throughput satellite connection is compared to a low-latency, low-throughput terrestrial connection. If paired, terrestrial connections can be used to reduce the overall latency and It is possible to provide ARQ for satellite connections with little impact on reliability.

[0091] Other mixed systems use heuristics or techniques such as machine learning to predicts when a connection becomes unreliable and then stops using the connection just before that transition occurs It is possible.

[0092] FIG. 1C illustrates a less efficient approach than the approach subsequently described herein in various embodiments. 10C is a schematic diagram of one such mixing system that describes an approach to Examples illustrating some of the technical challenges that lead to less efficient data transmission and / or communication is shown as:

[0093] In Figure 1C, connections below the target reliability threshold are not used to send new data. They remain in an untrusted (UNR) state and are not connected to a trusted (REL) connection. Send either a duplicate of a packet already sent, or an empty "dummy" [D] packet It is used only to

[0094] Figure 1C(A) shows the initial state, where six packets are available for transmission, but Both sequels C1 and C2 are now in the UNR state. As a result, they are empty "dummy" Only [D] can be sent, and the 6 packets in the input queue are still not available. This is the main drawback of this embodiment. However, they may not be dropping 100% of all packets sent. is high and data is still in the input queue and not being delivered. Dummy [D] packets Some of the packets are arriving and they are not among the six packets in the input queue. They may serve a more useful purpose if they instead contain be.

[0095] Figure 1C(B) shows the next state, where connection C1 has transitioned to the REL state. It is possible to provide an input queue, which is used to receive packets [1] and [2]. and put them in flight towards the receiver. Connection C2 remains in UNR state, with only duplicates of packets 1 and 2 ([1R] and [2R], respectively) , or an empty "dummy" [D] packet can be sent.

[0096] FIG. 1C(C) shows the next state, where connection C2 has also transitioned to the REL state. Connection C1 carries packets [3] and [4], and connection C2 carries packets [5] and Also, in this example, the previously sent packet [2] on C1 is lost. C2 responds to the ARQ request by sending another copy of packet 2 [2R]. This is another technical drawback of this embodiment, and Handling conventional ARQ requests results in packet 2 arriving at the receiver with high latency. because an extra round trip was required.

[0097] Improvements for handling untrusted connections in a mixed connection system described herein The proposed method is called PFLC and consists of four components 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019, 020, 021, 022, 023 Figure 2 shows how the IEEE 802.11 standard is used to interoperate with other components to provide data parity. FIG. 2 illustrates a scheduler 160 that controls the communication and / or routing of packets. It is 00.

[0098] The flow identifier 001 identifies the flow of the reliability request. ,IP5 tuple (e.g., source IP address / port, destination IP address / port, Grouping packets arriving at the input into logical flows based on techniques such as Other techniques are possible. Each of these flows is specific to a particular application. a conversation or dialogue (e.g., a two-way VoIP session between two endpoints 102 or 110) This includes data related to the

[0099] The flow identifier 001 also determines the reliability requirements for these flows. In this embodiment, this is deep packet inspection (DPI). et inspection (DPI)), coded rules and heuristics, By utilizing techniques such as machine learning or user-configured hints, There is a possibility that this will be accomplished.

[0100] For example, in FIG. 2, packets comprising flow 290 are sent to Session Initiation Protocol (SIP)) VoIP traffic matches user-configured rules and achieves 99% It demands reliability.

[0101] The connection manager 002 is configured to measure and observe connection properties. The connection controller 154 calculates the past, present, and predicted future signals for each connection. For example, in some embodiments, this may be configured to track packet reliability. / byte loss measurement, monitoring external metrics such as wireless signal strength, user / admin hints This may include consideration of the underlying technology or machine learning techniques.

[0102] The information is then shared (using nearby or "friendly" (e.g., company-owned) equipment) "crowdsourced" based on common rules, machine learning, or through other means Crowdsourced data represents monitored information. The input data set may then be provided by the system 200 in the form of: Used to modify how routing is performed for communications.

[0103] The system 200 may generate statistics for each of the following combinations (but not limited to): Information (cost, loss, latency, etc.) may be collected: 1. Precise location (e.g. GPS coordinates) 2.Technology (2G, 3G, 4G, satellite,...) 3. Accurate time and date 4. Weather if possible 5. Carrier / Provider 6. Physical equipment (satellite antenna size, cell phone antenna) shape factor, etc.) 7.Other

[0104] To predict the performance of data communication, optimization techniques (e.g., machine learning techniques) are used. ) may be applied. Reporting and access to this information may be done in a variety of ways. This can be done peer-to-peer or by managing and weighting various sources of information. This includes through a central server (e.g., weighted by reliability, correlation). For example, geographically specific fades, geolocation ), historical data may be needed to change processes based on location and carrier, for example. The processing of these statistics for decision making is done on-device. Either it is done on the server and pushed down, or it is done on the device and server combination. It can be either one.

[0105] In some embodiments, the connection controller 154 may , can be collapsed into a single scalar value, p, per connection, which is the probability of an independent, uniformly distributed loss. For example, in Figure 2, connections C1 and C2 are observed to have a p-value of 1%. Connections C3 and C4 each have a p-value of 10%. These can be summarized as:

[0106] Some embodiments of the connection controller 154 may take a more cohesive view of the underlying connections. Measurements and uncollected observations may be published, which may be independent or uniform. This is because non-distributed losses can be difficult to reduce to a single scalar value. For example, some embodiments may employ background processing to analyze observations for statistical dependencies. This may include a hand process (locally or using a central system) or / Based on heuristics, it is possible to predict that there may be dependencies Some types of connections (e.g., belonging to the same wireless carrier or sharing infrastructure) Two modems from different carriers known to have different underlying resources Special attention is paid to other types of connections that have some kind of interdependence in behavior due to sharing You may pay attention.

[0107] The third component 003 is a similar, past, present, or predicted future connection. A grouping of connections with properties. In some embodiments, this grouping is performed by the connection controller 154 based on the compiled scalar value of p .

[0108] For example, in FIG. 2, the connection controller 154 groups connections C1 and C2 into one group. and connections C3 and C4 in the second group. Using aggregated or unaggregated observations of the connected properties of the For example, grouping may be based on connection cost (high cost) Another example could be based on: By grouping connections based on RTT, packets with deadlines are sent to the destination By allowing preferential scheduling on the most likely group of connections. There is a possibility.

[0109] The fourth component, 004, simultaneously considers other constraints such as cost, efficiency, and latency. Schedule packets over groups of connections in a way that respects flow reliability requirements The key is to ring.

[0110] For example, in FIG. 2, scheduler 160 schedules packets comprising flow 290 to All packets were scheduled in a way that met the target reliability of 99%. packets 291 and 292 are scheduled on connections C1 and C2 (respectively). As the connections are mapped, each of the connections can meet the target reliability on its own. Packet 293 was duplicated and sent once to C3 and once to C4. , the pooled values ​​of p for each connection are uncorrelated / independent loss events Since is known, two transmissions of the packet result in a combined reliability of 99%:

number

[0111] The following paragraphs provide a more detailed description of specific embodiments of the second component 002 of the PFLC. Provides measurement and observation of connection properties.

[0112] In some embodiments, the reliability of a particular connection is determined by the amount of loss experienced by that connection. The reliability of a particular connection is evaluated by measuring the loss it incurs. is inversely proportional to the amount of

[0113] In one embodiment, the amount of loss experienced by a particular connection is determined by the number of packets lost on this connection. The sender is responsible for sending over a particular connection. Divide the packets that need to be sent into groups.

[0114] Each group is assigned a unique identifier. Packets of a particular group are The receiver receives a unique identifier for every group it sees. Record the identifiers and count the number of received packets tagged with these unique identifiers To avoid double counting, duplicate packets are discarded. The receiver counts the sender. Here, the sender periodically reports back the number of packets sent and the number of packets received. The number of lost packets is calculated by calculating the difference in the number of packets sent and dividing this difference by the number of packets sent. Each group unique identifier has a loss percentage value. Drop.

[0115] In another embodiment, the loss percentage value is calculated using the number of bytes instead of the number of packets. can be.

[0116] In yet another embodiment, both packet and byte counts are used. Two loss percentage values ​​are generated for each unique identifier in the group. These two values ​​are For example, averaging, taking the minimum, taking the maximum, or any other means to yield a single loss percentage value that is considered representative of this connection. bring about.

[0117] Multiple loss percentage values ​​may be generated for each connection over time. In this form, the most recently calculated loss percentage value for a particular connection is the one attributed to it. In another embodiment, the group-specific identifier used by a particular connection is always increasing. and the loss percentage value from the highest group-specific identifier is attributed to this connection.

[0118] The loss experienced by a particular connection is not uniform or consistent over time. For example, a connection may drop a group of packets entirely, It may then deliver the next group of packets in full. Each of the groups developed significantly different views about the reliability of this connection within a relatively short period of time. This will give you a pass.

[0119] By recording and processing multiple loss percentage values ​​generated over time for a particular connection, This process may be able to overcome this technical drawback. By averaging, maximizing, minimizing, or any other means By using the metric, multiple loss percentage values ​​may be reduced to a single value that represents this connection. It is considered to be

[0120] Technical methods that explain this lack of uniformity include, among others, intensity-weighted measurements. (clustered samples are more representative than (temporally) "isolated" samples) The idea is to use the time weights. The annotated samples are snapshots of the type of loss experienced on the connection at various points in time. This can be observed as appearing, for example, "bursty" or "uniform." The historical memory of these snapshots can be tracked in the data storage. This data storage is weighted by a scalar "p" value summarizing the connections. These are things that could potentially be used to add or modify the

[0121] Other methods are possible, such as modifying the intervals using time weighting. In an example embodiment, a sampling engine is utilized to probe sample data. Generate and send packets and establish a baseline for measurement based on real-world experience (e.g., some flaky links can be randomly, more frequently, or alternate types of packets / groups of packets based on experience Sampling may also be performed using a loop.

[0122] In some embodiments, a group of packets is sent over a connection to saturate the connection. Only that group of packets that are being sent are used to generate the loss percentage value. The reasoning behind this logic is that when a particular connection is maximized, only that connection In some embodiments, the entire The IETF ICCRG draft, "draft-c heng-ICHRG-delivery-rate-estimation-00 As defined above, connections will saturate if not limited by the application. .

[0123] In one embodiment, multiple loss percentage values ​​for a particular connection are calculated over a fixed time interval. , is recorded. If the life of the recorded value exceeds its fixed time interval, this value is It will be discarded.

[0124] In another embodiment, multiple loss percentage values ​​for a particular connection are recorded, up to a maximum number of values. Once the maximum is reached, the oldest value is replaced by the new one.

[0125] When multiple loss percentage values ​​recorded over a period of time are reduced to a single value, different Different connections with loss patterns may appear to have similar loss properties. For example, if an application sends 10 packets per second for 10 seconds, a total of 100 packets Let's assume we send packets with a relatively uniform loss pattern, losing one packet per second. Consider a connection C1 with a turn. C1 receives 1 in 100 packets over 10 seconds. Another comparison is that 10 packets are lost every 10 seconds. Consider a connection C2 that has a loss pattern that is bursty over a 10-second period. This means that 10 packets out of 100 will be lost. A fixed interval of 10 seconds results in a 10% loss percentage value, but the loss pattern is very different. The sender may use a different transmission strategy for each of these connections. There may be cases where profits are made from

[0126] According to some embodiments, multiple loss percentage values ​​are recorded over several time intervals. By recording the loss patterns, more information can be inferred about the loss patterns of a particular connection. A shorter interval gives a more instantaneous view of the loss properties of the connection. A longer interval gives a more general view of the loss properties of the connection.

[0127] According to some embodiments, the number of time intervals is fixed. Three time intervals are used: short, medium, and long. If values ​​are calculated (e.g., determined, observed) over all three intervals, the loss pattern is In such a scenario, the sender, for example, By calculating and transmitting FEC, lost packets can be recovered at the receiver. You can choose to have the lost packets be received as a result of the packet being lost, or simply replicate enough packets to make the lost packets Alternatively, the user may choose to reduce the likelihood of the device detecting the problem.

[0128] Percent loss values ​​calculated over a short interval may be used to calculate a percentage loss over a long interval (e.g. If the loss percentage is significantly greater than the (e.g., determined, observed) loss percentage value, the loss pattern is In such a scenario, the sender may For example, it may temporarily stop sending packets until the burst loss interval is over, thereby preventing significant loss. You may choose to avoid this.

[0129] Further inferences based on comparing the loss percentage values ​​calculated from various time intervals The scenario considered here is: This is merely illustrative and in no way limiting, and other variations are possible. According to some embodiments, the loss is obtained from analyzing the loss over varying time intervals. Inferences can be made about the pattern / distribution of loss on the connection (e.g., uniform vs. bursty) The information collected is maintained in historical records and is sent to the packet scheduler by PFLC Component 004. It is also another dimension on which the Ehring decision can be made.

[0130] By applying the concept of multiple intervals with different lengths to the previous example, we can connect C1 and C A distinction is made between C1 and C2. The losses of C1 and C2 are recorded at two time intervals. The first time interval is relatively short, 1 second in length. The second time interval is The intervals are relatively long, 10 seconds in length. For C1, both the short and long intervals This always results in a 10% loss percentage. For C2, it drops in one shot. Let's assume that the 10 packets sent occur on the fifth transmission event. The percentage loss value for the short interval is 100%, while the percentage loss value for the long interval is 20%. The difference between short and long time intervals is that the loss properties of C2 are more non-uniform. This indicates that the signal is more bursty.

[0131] According to other embodiments, the number of time intervals is variable, allowing more information about a particular connection to be obtained. It can be adjusted as more information is collected. For example, if a connection shows only uniform loss, If a particular type is determined, the number of intervals can be reduced to one, which is This should be sufficient to measure uniform loss.

[0132] According to some embodiments, the length of the time interval is fixed.

[0133] According to other embodiments, the length of the time interval is variable and may be known for a particular connection. can be adjusted based on the information that has been made, needs to be collected, or has been collected. do.

[0134] In one embodiment, statistical analysis can be used to determine the percentage loss of the older by determining how the percentage loss values ​​correlate with the newer percentage loss values. By selecting the cutoff lifetime (i.e., interval length) you can determine how fast the connection is The loss samples older than that lifetime are discarded. otherwise, stale samples can be detrimental to system performance. .

[0135] In another embodiment, if the length of a loss event is to be measured, The length of the time interval can be increased if the length of the event is likely to exceed it. do.

[0136] In another embodiment, the system is adapted to use the connection for real-time traffic. If combined, the system will respond faster / more aggressively over time. The interval may be shortened.

[0137] In another embodiment, a data flow may be identified as having a deadline, which These deadlines may define the length of the time interval used to measure the loss (e.g., It is pointless to use a long time interval for a deadline in the near future.)

[0138] According to some embodiments, the value update in each of the time intervals may be one or more It is triggered by a number of events.

[0139] One trigger is purely the passage of time, e.g., when a new group of packets is transmitted. Each time the system detects a time interval, it discards expired samples from each of the time intervals. , the new drop probability, other state information belonging to component 004 (e.g., hierarchy and connection state), and then decide how to transmit this new group of packets. It is possible to determine

[0140] Another trigger could be receiving new information about the loss from a peer, The system adds this new sample to the window and recalculates as above.

[0141] Other trigger examples include connections (cables) losing or gaining physical link state. removal / reinsertion of the cable), explicit congestion notification from the network Congestion notification (ECN), change of physical location, This may include events such as line band / frequency changes.

[0142] Some embodiments weight or prioritize these triggers to avoid conflicts. You may choose to ignore some triggers if you have information that supports them.

[0143] The loss data update (which determines everything else) involves sending data and Naturally, this relies on getting feedback on this, and in some embodiments, The back-channel mechanism measures latency, throughput, and connection path (e.g., route taken) Established for the transmission of monitored connection data, including

[0144] In one embodiment, CPU and memory resource consumption is calculated based on the measured loss percentage value. Each loss percentage value represents the loss It can be expressed as two values: the number of packets and the total number of packets. The loss percentage value can then be calculated by dividing the loss percentage by the By summing the packet counts and then summing those total packet counts, ) can be accumulated and associated with their specific subintervals. This allows There is no need to store the loss percentage value and the timestamp of when it was calculated. Since only the timestamps of the subintervals are recorded, the accuracy is reduced. If an expiration date occurs, some of the accumulated samples may have expired earlier. It may have expired or may not have expired yet.

[0145] Generate a single loss percentage value that represents the loss properties of a connection over a specific time interval. It may be required to record a sufficient number of percentage loss values ​​over the time interval to In one embodiment, the recorded percentage loss values ​​are calculated based on the time interval between the If it spans a time period greater than or equal to 1, it is considered to represent that time interval.

[0146] Based on the availability of a single representative percentage loss value for a particular time interval, Different decisions regarding transmission strategies can be made. In some embodiments, this is In this case, the sampling at the configured time interval is The validity of the rules is summarized in the form of per-connection state, which is then used by the scheduler 160. This affects transmission decisions. For example, the connection may have many time intervals with insufficient samples. As a result, the state will be considered INDETERMINATE. This allows the scheduler 160 to ensure that the time interval is filled with enough samples. The connection will simply be used to carry redundancy until it is satisfied.

[0147] FIG. 3 illustrates a method for using several time intervals, according to some embodiments. Divide into subintervals, and if the recorded sample spans more than half of a particular interval and the loss percentage value generated for each interval is considered representative (i.e., valid) for the interval. 3 is a diagram 300 illustrating an embodiment that ensures that the number of time intervals is fixed at 3. The interval lengths are fixed at 0.5 seconds, 3 seconds, and 30 seconds.

[0148] The 0.5 second time interval has two subintervals, each 0.25 seconds long, and A subinterval is considered valid if it has at least one sample in it. The time interval has six subintervals, each 0.5 seconds long, with at least three subintervals. Intervals are considered valid if they have samples in them. 30 second time intervals has 10 subintervals, each 3 seconds long, with at least five subintervals A connection is considered valid if it has a sample for the same time period for all connections. The number and length of intervals can vary depending on the type of connection, whether cellular or wired. It is considered suitable for connection.

[0149] In other embodiments, the probability of loss for a particular connection may be determined by measuring other properties of the connection. For example, a substantial increase in the RTT of a connection, or no A substantial decrease in the signal strength of a line connection may indicate an increased probability of a loss occurring.

[0150] According to some embodiments, a connection property other than packet loss or byte loss Measurement results can be converted to percentage loss values ​​by custom mapping. The resulting percentage loss values ​​are recorded in the same manner as the actual percentage loss values. and can be used.

[0151] In one embodiment, the RTT of a group of packets is the number of packets that are sent to this group on a particular connection. The receiver transmits packets and receives an acknowledgment from the receiver as to how many packets have been delivered. The time measured for this group of packets is the time between receiving the If the RTT exceeds a certain threshold, the loss percentage value is recorded as 100%. If the measured RTT of a group of packets does not exceed the threshold, the loss percentage value is , is recorded as the actual percentage of packets in this group that were delivered to the receiver. If no acknowledgment has been received after the waiting period (all packets lost), either because the acknowledgment was lost or because the acknowledgment itself was lost), the loss percentage value is 100%. This provides a mapping from RTT to loss percentage values.

[0152] In some embodiments, the maximum threshold for RTT is a function of the latency requirements of each flow. configured per flow as a number, e.g., VoIP requiring an RTT of <300ms A flow treats connections with an RTT of ≥ 300 ms as effectively 100% lost. Intuitively desirable.

[0153] The reliability of a single connection is inversely proportional to the probability of dropping data sent over that connection. In one embodiment, the amount of data transmitted over a connection can be quantified by correlating it with the amount of data transmitted over the connection. The probability of dropping transmitted data (i.e., the drop probability) is the probability of dropping data measured on that connection. The loss percentage is considered to be equal to the calculated loss percentage value, and the reliability is equal to 1 minus the drop probability. This can be quantified as a percentage value.

[0154] The following paragraphs provide a detailed description of specific embodiments of component 003 of the PFLC: a grouping of connections with past, present, or predicted future reliability, provide.

[0155] In some embodiments, the drop probability p (in component 002) for each aggregated connection is The reliability target T (calculated by component 001) is used in conjunction with the reliability target T (calculated by component 001). is used, and the relation:

number

[0156] For each connection, solve for n in this equation and map it to the next integer (called N) greater than or equal to n. The goal is to probabilistically meet the reliability target, or This represents the number of times a packet must be sent on the connection in order to exceed The value is obtained.

[0157] This number N refers to the hierarchy of connections, and connections are grouped as a function of their hierarchy number.

[0158] In some embodiments, a constant value for the reliability target T is used for all flows. This means that each connection is assigned to only one stratum (for each connection This means that the connection based on a set of calculated N values ​​is There will be only one subsequent grouping.

[0159] In some embodiments, each flow has its own reliability target (e.g., T=99%). (T = 80% of the desired VoIP flow vs. the desired temperature sensor). As a result, each row is assigned a different stratum N, and each flow is assigned to a different group of connections. This means that we may view looping as a function of both p and T.

[0160] In some embodiments, a limit is placed on the value of N to prevent excessive bandwidth consumption. These combinations of p and T that result in values ​​of N greater than the upper bound M are This means grouping the connections into a hierarchy M.

[0161] In some embodiments, tier N refers to tier 0 and is responsible for packet scheduling / transmission. For transmission purposes, connections at this level are treated differently. For example, connections at this level are considered untrusted. (too many transmissions required to achieve T), so Used only to duplicate packets already transmitted (best effort / preemption A RQ).

[0162] FIG. 4 is a flow diagram illustrating the grouping technique of some embodiments described herein. Figure 400.

[0163] The flow classification engine 156 classifies the flow 401 as having a target reliability T=99%. and identify flow 402 as having a target reliability T=80%.

[0164] The connection controller 154 manages the aggregate of connections C1, C2, C3, C4, and C5. p-values ​​(packet loss) are (respectively): 1%, 5%, 10%, 35%, and 40%. I calculated it.

[0165] The scheduler 160 is configured so that the tier upper limit M=3.

[0166] For flow 401 (T=99%), the calculated stratum N for each connection is:

[0167]

number

[0168]

number

[0169]

number

[0170]

number

[0171]

number

[0172] Scheduler 160 schedules packets from flow 401 for transmission. When grouping layers, the connection grouping to use is: Layer 1 {C1}, Layer 2 {C2, C3}, Layer Layer 0 is {C4, C5}.

[0173] For flow 402 (T=80%), the calculated stratum N for each connection is:

[0174]

number

[0175]

number

[0176]

number

[0177]

number

[0178]

number

[0179] Scheduler 160 schedules packets from flow 402 for transmission. When routing, the connection grouping it uses is; Tier 1 {C1,C2,C3}, Tier 2 {C4,C5}.

[0180] In another embodiment, connection groupings (hierarchies) and the associated metrics for generating them are The risk (e.g., information inferred about T, p, and the distribution of losses) is or data type (e.g., by flow identifier 001). In one embodiment, certain statistics are generated per connection per flow and scheduled. 160, so that it can make smarter decisions about packet transmission. (PFLC Component 004). The statistics collected may vary per connection per flow. good.

[0181] The following paragraphs provide a detailed description of a specific embodiment of component 004 of the PFLC: Flow Reliability Efficiently scheduling packets over a group of connections in a manner that meets demands , to provide.

[0182] In a simplified exemplary embodiment, the monitored statistics are calculated over a fixed, predetermined interval. Packet and byte loss (and any RTT / retransmission timeouts (RTO)) transformation), which is done only per connection (not per flow). The loss statistics are converted into stratum and state values, which are then used to schedule The packet is fed to the controller 160 to determine which packets are transmitted, on which connections, how many times, and how frequently. Help decide what to send.

[0183] In another embodiment, the connection hierarchy may be set by a common set of rules and schedules. The controller 160 relaxes the restrictions placed on which tiers a given data flow can use. In yet another embodiment, a combination of the above two methods may be used.

[0184] The method for determining how to utilize a connection for a particular type of traffic is also In one embodiment, the nature of the transmission may vary depending on the customer or application. There is an indication from the If so, the system will have benefits for transmission (using cheaper but less reliable connections) and the rest of the network (for flows requesting free space on more reliable connections) It is configured to use lower hierarchical connections for both the

[0185] In some scenarios, using a lower tier connection may be more suitable for applications. By forcing the application onto a less reliable network, more data is can be expensive and may be more costly due to multiple retransmissions required, Or it could be cheaper if a less reliable network has lower costs. There is.

[0186] As an example, for transmissions that are deemed or indicated as urgent, the system may may be willing to incur the extra expense of sending duplicate information over the network. In the event of an emergency or non-emergency, the system must maintain reliable network capacity. to maintain data integrity (especially when data is cheap over unreliable connections) They may be willing to incur some packet loss. These additional costs are , charged by the routing device / system and tracked for later reconciliation. There can be various amounts of added redundancy (e.g., more for more reliability). (This can improve performance significantly, or a small amount can improve performance less). The communicator may modify the desired reliability based on cost (e.g., 98%, 9 9%, 99.9%, or even 99.99% reliability comes at a significant cost. may have).

[0187] Per-connection adjustments (since it is the connections that change) are possible in some embodiments. This determines how actively the system manages the traffic being sent over the connection. The Committee may also specify how the

[0188] According to some embodiments, the formula calculated by the PFLC component 003 of the present invention is The per-row, per-connection hierarchical allocation is nominally the maximum number of connections that the scheduler 160 can allocate from a particular flow. corresponds to the number of times that transmission of a packet is scheduled on a connection belonging to that tier.

[0189] In another embodiment, the scheduler 160 may determine the preferred order of transmissions using the connections. It is configured to implement different sort orders for each packet with the same granularity as the packet unit. One of the dimensions of the time series can be cost in particular. In this variant, the scheduler 160 The scheduler 160 is configured to essentially "pull" packets from the connection in bursts. Instead of using multiple dimensions (where implementing multi-dimensional priorities would be too complicated), The QoS group is configured to push packets to the connection.

[0190] Another variation to control costs is to use a simpler, more cost-effective alternative to real-time sorting. A method is proposed to obtain some of the benefits of cost optimization. For example, scheduler 160 may: A simple " In this example, for expensive links, the system may be configured to impose an upper bound at tier X, such that the connection There may be many other connections, such as X+1, X+2, etc., that satisfy the transmission by the system. If the X+1 stratum is evaluated as untrusted, it will be marked as untrusted. This is until it is qualified as a tier requiring fewer iterations. In terms of overall cost, the difference between 1 and 2 iterations is much greater than between 9 and 10 iterations. Since this is high, in reality, X is likely to be a low number.

[0191] For example, an expensive connection may be capped at tier X but actually be capped at tier X+M. If it belongs to the hierarchy, it need not be considered untrusted. As long as there are other connections, they may still be used there, which means that the expensive connection Let M be the number of transmission attempts lost on (assuming the system has sent a packet X times on it). , in a way that can be handled by other connections in the hierarchy.

[0192] In some embodiments, the upper bounds imposed on the iterations may be static, and they are: What other connections are available and where are the traffic levels? In another embodiment, the upper limit may be dynamic. , which may depend on other monitored information (e.g., there are many other links available) If there is low traffic, or if there is a satellite cap at tier 1, then Otherwise, the satellite may be assigned to Tier 2 (and have an absolute upper limit there). Possibility of adjusting the highest tier based on the relative price difference between multiple connections In this variant, cost optimization is separated on a layered mechanism (and -Avoid classification, or system-wide optimization of costs across all links).

[0193] This technique allows systems to allocate expensive connections when they qualify for a higher tier. This may not prevent the use of the If so, the system may still use it, which is much safer than measured at Tier 3. Even if a full cost analysis would lead the system to select the most cost-effective connection, This is the amount of data that is sent on each packet that is sent over the connection when the link is used. The system is expected to gain significant financial / economic value from this (compared to the connection itself). This may increase congestion.

[0194] On the unreliable side, to further reduce costs, this technique can be used over unreliable connections. This can be added to the exponential backoff from sending This technique controls routing to back off more aggressively on expensive connections. This control can include a "non-reliability hierarchy" with a similar upper limit as above. However, by generating "layers", how often and how many packets This is done except that it relates to whether the system will revalidate using

[0195] Other variations are possible, such as a simple approach and real-time connection sorting. Access real-time connection pricing, hints from applications, or flow classification engines. It aims to achieve complete cost optimization with hyper-dynamic hierarchical analysis through prediction results from gin, etc. All of these approaches are discussed in various embodiments herein. As mentioned above, the idea of ​​a basic hierarchical limit per link is more In the context of the hierarchy of connections available in simple implementations, "poor man's cost optimization" It is even more effective as a

[0196] FIG. 5 illustrates such an embodiment, where T=99%, p C1 =1%, p C 2=5%, p C3 =10%, p C4 =35%, p C5 = 40% of connections for each ,For example flow 500 with p-values ​​per flow and hierarchical upper limit M=6 per flow, is.

[0197] Scheduler 160 schedules packets from this flow on Layer 1 (which contains only C1). If scheduled, the packet is acknowledged with a positive acknowledgment. acknowledgment (ACK) or negative acknowledgment (negative acknowledgment Until either a NACK (NACK) is received or an RTO occurs. Transmitted exactly once on C1.

[0198] Scheduler 160 schedules packets from this flow on Layer 2 (including C2 and C3). If scheduling is done with , packets are scheduled until either an ACK or NACK is received. It is transmitted nominally twice until the packet is deleted or an RTO occurs. C1 , and p C2 Value of Pre-emptive (before NACK or RTO) ) by two transmissions, the packet is

number

[0199] Preemptive transmission is where the name PFLC comes from. 160 can reduce latency in real-time applications, which If the real-time flow and connection estimates are correct, the round trip required for ARQ is Because there is no lip.

[0200] Scheduler 160 also reduces bandwidth requirements compared to SMPTE-2022-7. Through flow and connection evaluation, duplicate packets are detected on C2 and C3 in this example. Only transmission is possible on C1, C2, and C3, not all of them.

[0201] In some embodiments, the duplicate transmissions may be split, one on C2 and the other on C3. Preferably, both can be on C2, or both on C3, if desired.

[0202] In some embodiments, overlapping transmissions on the same connection may be performed depending on the loss profile / distribution. , separated in time. For example, bursty loss distributions may further separate transmissions in time. While there are benefits from uniform losses, this is not the case.

[0203] In some embodiments, if an ACK is received before the second transmission occurs, the second This, combined with the low latency on the connection of the first transmission, , can occur if there is a time separation between the transmissions.

[0204] These techniques are the same for higher numbered hierarchies. For example, schedule Router 160 schedules packets from this flow on Layer 5 (which contains only C4). If so, the packet is transmitted nominally five times. Transmission is preemptive (with NACKs). or prior to the RTO), may be separated in time and the ACK is received first. If so, it may be cut short.

[0205] In some embodiments, when scheduler 160 selects a tier for a packet, Subsequent preemptive transmissions can only occur on connections within the same hierarchical layer. This is a process known as "pinning" a packet to a layer.

[0206] In other embodiments, subsequent preemptive transmissions may be performed at higher numbered levels. On any combination of layers, the relation

number

[0207] For example, a packet may use a combination of layers 2 and 4 to connect to a connection at layer 2. It may be sent once via the stratum and twice on the connection at stratum 4. This is This helps avoid the issue of reliability being concentrated on a hierarchy of available bandwidth or connections. This allows for a more flexible approach to using from).

[0208] Transmitting packets using a combination of layers provides reliable data transfer over one particular connection. This is also useful for avoiding problems with connections gathering together (e.g., connection 7 is the only It could be a connection, down for a period of time, the entire time packets are being retransmitted The reliability of multiple transmissions is dependent on the multiplexing of packets over independent connections, so transmission is actually lower than if it had been sent).

[0209] Another potential benefit of transmitting packets using a combination of layers is the short time This is where performance degradation (e.g., heat) occurs due to overuse of connections between frames.

[0210] In some embodiments, the above scheduling rules and hierarchical allocations are This applies to bytes and byte ranges that belong to a flow, not to packets.

[0211] Optional feedback channel, which can be a connection used to monitor the performance of the solution (e.g. high reliability / low latency channel). The que channel is useful for perturbing the selection of connections, especially when the probability is low between them. correlated to each other and attempts to encourage the use of independent probabilities wherever possible to establish objectives. This is the case when the feedback channel only receives time-stamped packets. It can interoperate with time-stamped acknowledgments rather than with

[0212] Therefore, the scheduler 160 may consider multiple methods of transmission, e.g., unicast, or Broadcast can be used. The connection to be used can be The broadcast domain can be identified for tracking purposes in the for a specific hierarchical connection, or for all connections selected to send packets can be established.

[0213] Other models of transfer are possible. Further discussion of potential variations and approaches is provided in the remainder of this specification. The success rate for a particular connection for use in tiering connections is further described in the document. Various methods for determining the probabilities are possible.

[0214] Aspects of the PFLC component 004 in some embodiments include connection, reliability (R RELIABLE, UNRELIABLE, and INDETERMINED These states and the transitions between them are described below. Other states are possible and these are shown as examples.

[0215] If a packet is transmitted by a group of connections belonging to a particular tier, A certain number of copies of the object are also transmitted. The higher the hierarchy, the more copies are transmitted. This means that the higher the tier, the more "goodput" (the actual amount of effective data that an application flow has experienced) is used. This suggests that the throughput (useful throughput) will be lower, which means that the same information will be delivered to the receiver. To do this, more bytes (i.e., more duplication, or more redundancy) are required. The information is delivered to the receiver with a selected target probability. The advantages of outweigh the several disadvantages, including but not limited to increased costs of transmission. For example, users of a system may be more likely to be Some companies may state a maximum limit they are willing to pay for the work they do. This limit depends on the underlying connection. This translates to a byte or bitrate threshold based on which you will be charged. For example: ● Your connection provider uses a burst billing model, and you pay for throughput over a month. We charge based on the 95th percentile of your network usage (based on a 5-minute average sample). do. ● Customers only pay up to 100Mbps of throughput under this billing model. I have no intention of doing so. ● The goodput requirement of the application flow is 50Mbps, but the connection is Due to reliability, retransmission techniques may require every packet to be replicated twice. (Each packet is transmitted a total of three times.) A goodput of 50Mbps is achieved. For purposes of this, there may be a total throughput usage of 150Mbps, subject to customer caps. Therefore, it is recommended not to use this connection.

[0216] The byte or bit rate threshold may, in some embodiments, determine the maximum number of connections that the system can utilize. The data value of the data field of the data structure being referenced to determine whether or not This data value is used for comparison to switch the connection's usage state. In the above example, the threshold data field stores a data value of 100Mbps. , the throughput utilization can be determined as 3×50=150Mbps. 00, even if it is possible to obtain the desired transmission success rate (because of the overuse of the bandwidth), This is to ensure efficient bandwidth usage and data transfer. This is useful when a balance of reliability needs to be established. A rule can be tracked for each connection or for a group of connections.

[0217] As described below, thresholds can also be used to establish the highest tier. The highest tier uses a fixed number of calculations to reduce the computational load by reducing the number of calculations required at runtime. According to some embodiments, the highest tier may be established periodically for a particular connection. To prevent a system from using the connection beyond a tipping point, A transmission event with a given delivery target probability is in a stratum higher than the highest stratum. If you request to use this connection (based on its drop probability), the connection , do not participate in this transmission event. For example, in a certain layer, This may require up to seven retransmissions to achieve the desired result, resulting in an inefficient use of bandwidth resources. Flow.

[0218] In one embodiment, the same highest stratum is assigned to all connections to simplify and predict operation. Increase the possibility.

[0219] Measurement of network properties of a particular connection is performed when this connection participates in a transmission event. This is only possible if a particular connection has sufficient transmission capacity to keep measurements up to date. You need to participate in the event.

[0220] A connection is unlikely to participate in a transmission event due to the combination of its highest stratum and its drop probability. The scheduler 160 or the connection manager (e.g., The purpose of the 154 protocol is to provide new measurements of the network properties of this connection. may decide to force this connection to participate in some transmission events as When the drop probability for this connection is updated, the decision whether or not this connection will participate in a transmission event is updated. The decision can be reevaluated.

[0221] A connection may not participate in transmission events, which means that the sender may not participate in all or any The reason is that the network does not have enough data to transmit to maintain control of the connection. When useful data becomes available again and it is desirable to resume transmission over this connection, The scheduler 160 or the connection manager 154 may use this connection when making new transmission decisions. It is advisable to take into account that the latest measurements of subsequent network properties may not be available. stomach.

[0222] Similarly, connections are also routed according to the configured priority routing preferences. may not participate in the transmission event due to a This routing preference allows lower priority connections to be overridden. This allows higher priorities to have sufficient bandwidth to handle the priority data flow. If there is no other traffic, this is because The system has limited information about the connection, so the scheduler 160 or connection manager The filter 154 must take into account outdated observations of connection properties.

[0223] In some embodiments, connections that are not participating in a transmission event may be added to the assigned hierarchy. (In code, this is implemented by setting the hierarchy to 0, for example. (It is possible to do this, but it contradicts the mathematical definition of the hierarchy.) Once enough statistics have been gathered that indicate a connection can participate, the connection can be assigned to a tier. can.

[0224] In one embodiment, each connection is assigned a state that reflects its current condition or operating state. A connection that is participating in a transmission event is said to be in the RELIABLE state. If a packet does not participate in the transmission event due to the combination of its drop probability and the highest stratum, A connection that does not have a record of the most recent measurement is said to be in an UNRELIABLE state. A connection that is not in the INDETERMINATE state is said to be in the INDETERMINATE state. As the connection continues, it can move between three states.

[0225] In some embodiments, these connection states change for each flow due to p,T. The latency requirements may vary from flow to flow. For example, Flows with higher latency and / or lower latency requirements may degrade a particular connection to UNRELIABLE. BLE, but this same connection has a smaller T value and / or It may be considered reliable for other flows that do not have latency requirements. There is.

[0226] However, some connection state may be shared by all flows. For example, connections containing stale observations in that time interval are They may be considered INDETERMINATE regardless of their T value.

[0227] In some embodiments, a connection in the RELIABLE state is one that is connected to tiers 1 and above but not to tier M. Connections assigned to the full hierarchy. UNRELIABLE or INDETERMINATED Connections in NATE state are assigned to stratum 0 or stratum M and used accordingly (mainly , transmitting a copy of the packet transmitted on the reliable layer).

[0228] The distinction between the UNRELIABLE and INDETERMINATE states is LIABLE connections utilize backoff timers to reduce the frequency of packet transmissions. The rationale is that it is unreliable over all available measurement periods. Connections that are measured conclusively as being unreliable are likely still unreliable, so you should reconnect frequently. The back-off timer prevents excessive resource usage just to re-measure the The backoff timer still allows this periodic remeasurement, just at larger intervals. That's it.

[0229] Figure 6 is a diagram 600 describing the state transitions of a particular connection according to one embodiment. Alternative approaches to are possible, and there are more, fewer, or different states. There are cases where this happens.

[0230] As mentioned earlier, the network properties of a connection are the percentage loss value (or communication or other value indicating the reliability of the transmission) and then divided into multiple intervals (e.g., three ) a time interval recorded and considered to be representative of one or more time intervals or reduced to multiple values, or to one or more time intervals.

[0231] The transmission system is assumed to have a predetermined target reliability expressed as a percentage value. To compare a representative loss percentage value p for a time interval with the target reliability of the system, The reliability value for the time interval is

number

[0232] As shown in FIG. 6, state transition 600 determines the number of valid reliability values ​​and their impact on the system. How it compares to the target reliability, the previous state of the connection, and the current state of the connection Depends on the state. Here is an example from where the number of valid reliability values ​​are 0, 1, 2, and 3.

[0233] If the reliability values ​​for all three time intervals are invalid, all observations about the connection The result is out of date. The resulting state transition is intended to be , disconnect from the trusted hierarchy and transition. UNRELIABLE or INDE A connection in TERMINATE state remains in the same state. Connections in the INDETERMINATE state transition to the INDETERMINATE state.

[0234] If the reliability value for only one time interval is valid, the following logic applies.

[0235] If the reliability value is equal to or greater than the target reliability, the state transition is optimistic, but requires caution. This is intended to be a new indication that the connection may be reliable. This is because of new observations. Connections in the UNRELIABLE state are Transition to RMINATE state to obtain more observations and confirm reliability as quickly as possible Disables the backoff timer for the purpose of preventing connections in RELIABLE state. Connections in INDETERMINATE state are still in the same state. If the state of the (This is optimistic, though cautious, that the reliability of the It remains the same (previously unreliable, so this is one new observation) is not sufficient to cause the transition).

[0236] If the value is less than the target reliability, the new observation indicates that the connection is unreliable. A connection in the UNRELIABLE state is still in the same state (new (Any subsequent observations confirm the previous state.) A connection in the RELIABLE state is Transition to DETERMINATE state (care should be taken as unreliability is temporary) However, it is acceptable to be optimistic and return the observation results as quickly as possible without a backoff timer. A connection in INDETERMINATE state will attempt to retrieve the results of that state. If it was UNRELIABLE, it would transition to the UNRELIABLE state (as before) Confirmation that the non-reliability has now been reconfirmed), otherwise it remains the same.

[0237] If reliability values ​​for only two time intervals are available, the following logic applies.

[0238] If the reliability values ​​for both time intervals are equal to or greater than the target reliability, the connection is considered reliable. Since the majority of time intervals match, the connection transitions to the RELIABLE state.

[0239] The reliability value of one time interval is equal to or greater than the target reliability, and the reliability value of the other time interval is If the target reliability is less than the target reliability, there is a discrepancy between these two intervals (e.g., a short interval The burst loss exceeds the reliability target at the first interval, and is below the reliability target at the longer interval. (A uniform loss may be seen.) Due to this mismatch, the connection may Transition to INATE state.

[0240] If the reliability values ​​for both time intervals are less than the target reliability, the connection is declared UNRELIABLE. A transition to the E state occurs when the majority of time intervals match, indicating that the connection is unreliable. Because there are.

[0241] If the reliability values ​​for all three time intervals are valid, the following logic applies.

[0242] If the reliability values ​​of all three time intervals are equal to or greater than the target reliability, the time intervals are Since all three reliability matches, the connection transitions to the RELIABLE state. do.

[0243] The reliability values ​​of two time intervals are equal to or greater than the target reliability, and the reliability value of the third time interval is equal to or greater than the target reliability. If it is less than reliable, the connection transitions to the INDETERMINATE state. There is a discrepancy between the intervals. Even if the majority believes the connection is trustworthy, one , apparently considers the connection untrustworthy. Immediately (without a backoff timer), more observations are requested.

[0244] If one or zero of the time intervals is equal to or exceeds the target reliability, and the reliability value of the other time intervals is equal to or exceeds the target reliability, If the connection is less than reliable (for a majority of the time interval), the connection transitions to the UNRELIABLE state. but considers the connection untrustworthy).

[0245] In other embodiments, state transitions may have different rules than those described above. Other information may also be considered, such as:

[0246] Based on previous measurements and conditions, in some cases, windows as described herein Historical information including previous combinations of losses over various time windows beyond a given state "Rate of state change" which can be used to predict the stability of a given connection in Data regarding.

[0247] In an alternative embodiment, this historical trend data may be used to determine the time period in which traffic is transmitted over a particular connection. It is used to determine the rate and rate change.

[0248] In a further embodiment, between a downstream termination point and the router system described herein For example, every packet sent is associated with the layer on which it was sent. It keeps track of whether a message has been received and what its expected probability of arrival is. There may be metadata associated with the packets handled within. may be contained / embedded in the packet itself.

[0249] This association information can be used to assess the end-to-end reliability of the connection. If the reliability data is out of date and needs to be updated, or if the data is simply missing, can be particularly useful.

[0250] In an exemplary embodiment, an untrusted stratum (e.g., stratum 0) may be configured to verify trustworthiness. Occasionally sending redundant packets to potentially increase the overall success rate of data communication It will be used.

[0251] In the following paragraphs, several embodiments of the PFLC component 004 are described, including connecting layers and connecting layers. The concept of continuation states is used together to meet the target reliability and latency constraints of a flow. How to intelligently route packets over available connections The following paragraphs shall be described in more detail:

[0252] In some embodiments, the scheduler 160 immediately sends the It performs the task of providing a set of packets (bursts) to be sent, which is called a burst. The total size of the burst (in bytes) or the number of packets in the burst, and Subject to constraints imposed on the requirements of the associated flow of data and a determined hierarchy of connections. In another embodiment, the scheduler 160 determines the set of packets to be transmitted next. A timing analysis is performed to determine the packets to be sent and optimally allocate those packets to connections that have available capacity. Execute the task.

[0253] In some embodiments, the scheduler 160 determines whether a packet is received by a peer. until such time as it is determined that the packet is Each packet contributes to a connection until it is deemed too old. This will track the metadata of the

[0254] In some embodiments, such metadata may include the cumulative number of packets lost during transmission. Probability, current in-flight count, and its performance These statistics are based on the current hierarchy that transmitted the packet. Allows scheduler 160 to determine if enough packets have been sent to fill To perform Noh.

[0255] Other embodiments may instead use metadata that includes the number of times a packet has been sent on each connection. You may choose to use this information to estimate the cumulative drop of a packet. Calculate the probability.

[0256] The scheduler 160 schedules the traffic for a given connection. When performing Step 1: Under the condition of hierarchical transmission restrictions, the target reliability criterion is not met. Any packets previously sent (e.g., assigned to Layer 2 and connections within that layer) Step 2: Retransmit packets based on the hierarchy. Step 3: Transmit the new packet subject to the transmission limit based on the previously transmitted The system attempts to meet the minimum burst size by retransmitting packets that have been sent. Step 4: Detect the minimum burst by sending packets with dummy payloads. Try to fill the size.

[0257] In step 1, some embodiments iterate through the list of transmitted packet metadata. Repeated scanning yields the highest cumulative drop probability p (i.e., ,

number

[0258] Such packets are sent if the packet's assigned stratum matches the stratum of the current connection. If so, or if the packet does not currently have an assigned stratum, Well-formed. If the packet is well-formed, its metadata is updated as follows: The cumulative drop probability of the packet is updated to the new cumulative drop probability, which is the probability of the old The cumulative drop probability is the drop probability of the connection carrying the scheduled packet. , and the assigned tier of the packet is scheduled. The layer is updated to the same layer as the connection carrying the packet; the in-flight counter is updated. will be commented.

[0259] Some embodiments may take into account the impact of burst loss on the overall delivery of packets. To reduce the chance of a given packet appearing within the same burst, One may choose to limit the number of times packets are separated in time, rather Packets continue to be scheduled in separate bursts on the same or different connections within the same tier. Select to allow the device to be grouped.

[0260] In step 2, the scheduler determines if the burst size request has not yet been met. The queue manager 160 may take a new packet from the input queue, which The packet's associated flow requests that the packet be sent over the current connection For example, a flow with an RTT upper bound can set this threshold to the following R It can only be transmitted over a connection with TT.

[0261] Such packets are assigned to that burst and have a drop probability equal to that connection's drop probability. A high initial cumulative drop probability is assigned to the packet hierarchy. otherwise, the packet's The layer remains unassigned. The packet's in-flight counter is also set to 1.

[0262] Some embodiments may implement this technique subject to a target reliability T and a burst size limit. Choose to include a packet multiple times in the same burst (as in step 1) In some cases, the drop probability is adjusted, while other embodiments may adjust the drop probability due to the loss of an entire burst. In order to reduce the risk of a packet not being delivered due to the same One might choose to limit the number of times a packet can appear in a stream (time separation of packets).

[0263] In step 3, packets available for scheduling after the first two steps are Even if the number of packets or bytes is no longer present, the scheduler 160 continues to schedule packets or bytes until the minimum number of packets or bytes is reached. (i.e., the network characteristic monitoring unit 161 In these cases, the system may be configured to Some embodiments of the system may also be implemented to detect in-flight packets that have already met the target cumulative drop probability. The selection of packets is adapted to include repeated packets. For example, they may be sorted in descending order of cumulative drop probability, which is the probability of packets arriving at the destination. It could help even the odds.

[0264] As in step 1, the cumulative drop probability of such a packet is calculated based on the current drop probability of the connection. Unlike step 1, the assigned tier is updated to include the drop probability. Unlike step 1, the target reliability T is also set to the level where the assigned hierarchy matches the hierarchy of the connection. Neither match nor match is taken into account when choosing to include packets for padding. I can't.

[0265] Some embodiments choose to limit the number of times a packet can appear in the same burst. Since the packet may be selected (time separation of packets), the packet must be determined whether it is in step 1 or If it has already appeared in a burst through 2, it is ineligible for inclusion as padding. Packets that appear as padding contribute to the cumulative drop probability of a packet. Therefore, packets scheduled in this way will be routed through layer N in order of There may be cases where the general principle of sending multiple times is not strictly followed, which is due to padding and sending a packet one or more times with the The packet is sent one or more times over the connection of the assigned tier. This is because they may be equivalent.

[0266] Step 4 requires that the minimum burst size requirements of Step 3 are met. If this is not possible, the payload will be insignificantly scaled to meet the burst size requirements. Packets with invalid data ("dummy" packets) are generated. are discarded after receipt by the peer and are not subject to metadata tracking within the scheduler 160. It won't happen.

[0267] Schedules that a peer has received an instance of a packet (over any connection). Once the controller 160 is notified, the packet's metadata is removed from tracking. When the scheduler 160 is notified that an instance of the packet has been lost, it The in-flight counter is decremented. The new value of the in-flight counter is zero. If, and the cumulative packet drop probability p is,

number

[0268] As part of its flow request, the packet includes an upper bound (deadline) imposed on its lifetime. After this deadline, the flow may not request retransmission.

[0269] Scheduler 160 also determines if the count of a connection in a given tier transitions to zero. When this happens, the metadata queue assigned to that tier is also notified. All packets in are marked as unassigned, which is the There are no longer any connections in that tier that satisfy the retransmission request. Packets marked with this maintain the same drop probability they had when they were in the queue, and this The drop probability is used for future transmission decisions. For example, if a packet is initially dropped to Layer 2, If it has been allocated and transmitted only once, Layer 2 becomes empty and continues to transmit that packet. If a packet is reassigned to tier 3, it will require three transmissions to meet the target drop probability. The partial drop probability from the initial Layer 2 transmission is preserved.

[0270] As specific examples of some embodiments described in steps 1 to 4 above, FIGS. Consider 7(E). For the purposes of this example, the target reliability is set to T = 98% and the There is a single flow with no latency constraint and the highest stratum is set to M=3 (stratum < Only 3 are treated as reliable, the rest are tier 0 and are unreliable or means either INDETERMINATE or

[0271] Figure 7(A) shows three connections C1, C2, and C3, each with a drop of 27.1%. The input queue is initially in the INDETERMINATE state with a assigned trip probability. With packets 1 through 6 waiting in the queue, scheduler 160 is currently In this embodiment, the scheduler 160 does not keep track of any packets. The list is ordered so that packets with high cumulative drop probability appear on the right. Track the packet data through the above algorithm to find the packet further right in the list. Steps 1 and 3 in the

[0272] Connection C1 requests a burst of three packets. Step 1 does not result in any packets, since no packets exist. At 2, the scheduler 160 dequeues packet 1 from the input queue and It assigns a cumulative drop probability (CDP) of 27.1% to match the p of C1. The flight count is set to 1, but C1 is not in a RELIABLE state, so The tier remains unassigned.

[0273] So the metadata queue looks like this:

[0274] [Packets=1, CDP=27.1%, Inflight Count=1, Layer=Unassigned hand]

[0275] Dequeue packets 2 and 3 from the input queue and queue them as the first packet By assigning it to the metadata queue in a similar way to how the Continue with step 2 until the packet burst requirement is met. Steps 3 and 4 are not executed because the metadata queue is It remains in the following state:

[0276] [Packets=3, CDP=27.1%, Inflight Count=1, Layer=Unassigned hand]

[0277] Packets=2, CDP=27.1%, Inflight Count=1, Layer=Unassigned ]

[0278] [Packets=1, CDP=27.1%, Inflight Count=1, Layer=Unassigned hand]

[0279] Next, connection C2 requests a burst of three packets. In step 1, packets The packet that appears at the end of the queue is

number

[0280] [Packets=1, CDP=7.34%, Inflight Count=2, Layer=Unassigned hand]

[0281] Packets=3, CDP=27.1%, Inflight Count=1, Layer=Unassigned ]

[0282] [Packets=2, CDP=27.1%, Inflight Count=1, Layer=Unassigned hand]

[0283] Step 1 continues with packets 2 and 3, then fulfills the burst requirement, so step Steps 2-4 are skipped. The metadata queue at this point is:

[0284] [Packets=3, CDP=7.34%, Inflight Count=2, Layer=Unassigned hand]

[0285] [Packets=2, CDP=7.34%, Inflight Count=2, Layer=Unassigned hand]

[0286] [Packets=1, CDP=7.34%, Inflight Count=2, Layer=Unassigned hand]

[0287] Next, connection C3 requests a burst of three packets. As each packet qualifies, they are all added to the burst and their metadata is In this case, C3 is not in the RELIABLE state, so the tier is unassigned. The metadata queue at this point is:

[0288] [Packets=3, CDP=1.99%, Inflight Count=3, Layer=Unassigned hand]

[0289] [Packets=2, CDP=1.99%, Inflight Count=3, Layer=Unassigned hand]

[0290] [Packets=1, CDP=1.99%, Inflight Count=3, Layer=Unassigned hand]

[0291] This is the situation illustrated in Figure 7(A). Even though none of the packets were sent, the CDP for each packet exceeded the target reliability criteria. so it asks to schedule the packet on one of those connections. Subsequent requests do not bring packets from the metadata queue in step 1. Note that packets 1, 2, and 3 are from connections C1, C2, and C3, respectively. Note also that the RAID is in flight on C1 and C2.

[0292] The scheduler 160 then determines that packets 1, 2, and 3 have been received by the peer. The metadata is removed from the queue as the connection receives an acknowledgment that Also, as updated by the connection controller 154, C1 now has p=1% and R C2 is reliable and in tier 1, and C2 has p=3% and is reliable. Therefore, C3 is in tier 2 and has p=40% and is UNRELIABLE. Packets 7, 8, 9, 10, and 11 arrive at the input queue, after packets 4, 5, and 6 It will be queued.

[0293] Connection C1 then requests a burst of two packets. The metadata queue is empty. Step 2 is to select packets 4 and 5 from the input queue. and 5, assign them to bursts, and use this information to create metadata. Update the queue. Note that C1's tier is RELIABLE, so this All these packets are assigned to the C1 layer. These packets are burst-required. Since the request is met, steps 3 and 4 are skipped. The metadata queue is At this point we have:

[0294] [Packets=5, CDP=1%, Inflight Count=1, Layer=1]

[0295] [Packets=4, CDP=1%, Inflight Count=1, Layer=1]

[0296] Connection C2 then requests a burst of two packets. In step 1, this burst There are no packets in the metadata queue that are eligible to be included in the list, which means that they are all Target reliability requirements

number

[0297] Step 2 is then applied to dequeue packets 6 and 7 from the input queue. These packets have appropriately updated metadata and are Since this satisfies the request, steps 3 and 4 are skipped. As of now:

[0298] [Packets=5, CDP=1%, Inflight Count=1, Layer=1]

[0299] [Packets=4, CDP=1%, Inflight Count=1, Layer=1]

[0300] [Packets=7, CDP=3%, Inflight Count=1, Layer=2]

[0301] [Packets=6, CDP=3%, Inflight Count=1, Layer=2]

[0302] Connection C3 then requests a burst of size 1. In step 1, No packets are eligible to be sent. Packets 4 and 5 already meet the reliability criteria. Packets 4 and 5 do not meet the reliability criteria, but they are hierarchical. 2, so to send through C3 which has no hierarchy assigned Step 2 then dequeues packet 8 and updates the metadata accordingly. This satisfies the burst requirement and steps 4 and 5 are skipped. The queue at this point is as follows:

[0303] [Packets=5, CDP=1%, Inflight Count=1, Layer=1]

[0304] [Packets=4, CDP=1%, Inflight Count=1, Layer=1]

[0305] [Packets=7, CDP=3%, Inflight Count=1, Layer=2]

[0306] [Packets=6, CDP=3%, Inflight Count=1, Layer=2]

[0307] [Packets=8, CDP=40%, Inflight Count=1, Layer=Unassigned]

[0308] This results in the situation shown in Figure 7(B), where packets 4 and 5 are inactive on C1. Packets 5 and 6 inflight on C2, and packet 8 inflight on C3. It's flying.

[0309] Next, packets 4 and 5 receive an acknowledgement, and the stratum and p-value for each connection are The input queue still contains packets 9, 10, and 1. The metadata queues that include one are:

[0310] [Packets=7, CDP=3%, Inflight Count=1, Layer=2]

[0311] [Packets=6, CDP=3%, Inflight Count=1, Layer=2]

[0312] [Packets=8, CDP=40%, Inflight Count=1, Layer=Unassigned]

[0313] Next, C1 requests a burst of three packets. In step 1, the first packet is Packet 8 is eligible because it does not meet the reliability requirements and its layer is unassigned. Other packets in the queue do not meet the reliability requirement, but their allocation This burst is not eligible because the assigned layer actually matches the layer of C1. 8 is added to the burst, and the metadata is updated so that the assigned tier is 1. The resulting metadata queue is:

[0314] [Packets=8, CDP=0.4%, Inflight Count=2, Layer=1]

[0315] [Packets=7, CDP=3%, Inflight Count=1, Layer=2]

[0316] [Packets=6, CDP=3%, Inflight Count=1, Layer=2]

[0317] Step 2: The system then dequeues packets 9 and 10 from the input queue. and add them to the burst. This satisfies the burst requirement and completes steps 3 and 4. will be skipped. The metadata queue at this point is:

[0318] [Packets=8, CDP=0.4%, Inflight Count=2, Layer=1]

[0319] [Packets=10, CDP=1%, Inflight Count=1, Layer=1]

[0320] [Packets=9, CDP=1%, Inflight Count=1, Layer=1]

[0321] [Packets=7, CDP=3%, Inflight Count=1, Layer=2]

[0322] [Packets=6, CDP=3%, Inflight Count=1, Layer=2]

[0323] Next, connection C2 requests a burst of size 3. In step 1, packets 6 and Packets 8, 9, and 10 are ineligible, while packets 10 and 11 are eligible and added to the burst. In step 2, packet 11 is dequeued from the input queue and added to the burst. The input queue is empty at this point, and the meta data is The data queue is observed as follows:

[0324] [Packets=7, CDP=0.1%, Inflight Count=2, Layer=2]

[0325] [Packets=6, CDP=0.1%, Inflight Count=2, Layer=2]

[0326] [Packets=8, CDP=0.4%, Inflight Count=2, Layer=1]

[0327] [Packets=10, CDP=1%, Inflight Count=1, Layer=1]

[0328] [Packets=9, CDP=1%, Inflight Count=1, Layer=1]

[0329] [Packets=11, CDP=3%, Inflight Count=1, Layer=2]

[0330] C3 then requests a burst of size 3, minimum size 0. All packets are trusted. Eligible packets from step 1 are either eligible because they meet the performance requirements or are already assigned to a tier. In step 2, the input queue is empty. The minimum size associated with a burst is Since there is no need for steps 3 and 4, this situation is illustrated in Figure 7(C). Packets 8, 9, and 10 are in-flight on C1, and packets 6, 7, and 11 are in-flight on C2. Packet 8 is also in flight on C3.

[0331] Scheduler 160 then determines whether packets 7, 8, 9, and 10 have been acknowledged by the peer. The metadata queue will be deleted when the request is answered. is as follows:

[0332] [Packets=6, CDP=0.1%, Inflight Count=2, Layer=2]

[0333] [Packets=11, CDP=3%, Inflight Count=1, Layer=2]

[0334] One instance of packet 6 is marked as lost. The result is:

[0335] [Packets=6, CDP=0.1%, Inflight Count=1, Layer=2]

[0336] [Packets=11, CDP=3%, Inflight Count=1, Layer=2]

[0337] Another instance of packet 6 is marked as lost. The packet's metadata is reset (the packet's flow criteria may cause the packet to be retransmitted). (Assuming this is possible.) The metadata queue at this point is:

[0338] [Packets=11, CDP=3%, Inflight Count=1, Layer=2]

[0339] [Packets=6, CDP=100%, Inflight Count=0, Layer=Unassigned] ]

[0340] As a result of these losses, the characteristics of connection C2 are adjusted to have p=27.1%. At this point, the state is INDETERMINATE. As a result, C2 is removed from tier 2, so the number of connections in tier 2 becomes zero and the schedule As a result, the scheduler 160 assigns the Adjust the metadata of any packets assigned to it, which are now unassigned.

[0341] [Packets=11, CDP=3%, Inflight Count=1, Layer=Unassigned]

[0342] [Packets=6, CDP=100%, Inflight Count=0, Layer=Unassigned] ]

[0343] Connection C1 now requires a burst of three packets. In step 1, it is , finds that packets 6 and 11 are eligible and adds them to the burst. Step 2 finds that there are no packets on the input queue, and steps 3 and 4 find that the padding is It wasn't requested, so it won't be requested. The metadata queue at this point is: be:

[0344] [Packets=11, CDP=0.03%, Inflight Count=2, Layer=1]

[0345] [Packets=6, CDP=1%, Inflight Count=1, Layer=1]

[0346] These last three queue states are illustrated in Figure 7(D).

[0347] Next, C2 requests a burst of exactly three packets. Step 1 is Since all packets in the queue meet the reliability requirements, no packets are yielded. Step 2 results in no packets because the input queue is empty. Step 4 results in packets 6 and 11, whose metadata is updated. This results in dummy packets not being recorded in the data queue, which The metadata queue now looks like this: Is:

[0348] [Packets=11, CDP=0.01%, Inflight Count=3, Layer=1]

[0349] [Packets=6, CDP=0.427%, Inflight Count=2, Layer=1]

[0350] This example assumes that both remaining packets have been acknowledged and the metadata queue is empty. The process ends in this state.

[0351] FIG. 8 is a block schematic diagram of an exemplary computing device 800, according to some embodiments. The exemplary computing device 800 may be utilized to implement part or all of the system 100. and routing and / or or controlling the use of network computing devices (e.g., router devices, This applies to gateway devices, network switches, and hub devices. Example calculations The device 800 includes computer memory 804 (e.g., read-only memory, embedded memory, A processor 802 (e.g., a hardware processor) interoperating with a random access memory (RAM) processor, microprocessor, reduced instruction set processor, central processing unit) and one or more input / output interfaces 80 for receiving commands. 6, or a display component, which may have a Graphics, combined display with graphical user interface The computer memory 804 stores data, e.g., a data set that enables calculations. data structures, such as routing tables and / or It can store the network rules, observed network communication characteristics, etc. The plurality of network interfaces 808 may be configured to connect to one or more network interfaces. 8. The computer 800 is electrically coupled to the computer 800 so as to be capable of electronic communication through the computer interface. As referred to herein, the network interface 808 may be one or may be used to provide multiple network connections, over which , allowing for more efficient use of communication resources, and Or the communication may be coordinated.

[0352] FIG. 9 is a diagram 900 illustrating a physical computer server rack, according to some embodiments. In the computer server rack shown in FIG. 9, there are computing devices mounted on the rack, For example, multiple networks, including networked routers, switches, hubs, and gateways. In this example, the components interoperate with each other. , e.g., establishing routing tables and / or routing rules; In another embodiment, the configuration component Minutes interoperate and conform to routing tables and / or routing rules Controlling network connections, routing data packets, etc. Control the timing.

[0353] As described herein, the present technique controls the routing of communication of data packets. in the form of a physical data router or other networking device configured to control The device is a technical and computational solution that can be implemented. may include one or more processors operating in conjunction with one or more The processor may be coupled to a data storage device. When executed by a computer processor, the programmable instructions (e.g., A non-transitory computer that stores software that causes a processor to perform the method described in the specification. Computer-readable media (e.g., diskettes, solid-state storage, hard disk drives) Live).

[0354] The terms "connected" or "coupled" refer to a direct connection (in this case, to one another). the two bonded components are in contact with each other) and indirect bonding (in this case, at least The term "common element" may include both a "common element" and a "common element" (with at least one additional element located between the two elements).

[0355] Although embodiments have been described in detail, various modifications are contemplated herein without departing from the scope thereof. It is to be understood that variations, substitutions, and modifications may be made. The scope applies to the process, machine, manufacture, composition of matter, means, methods, and compositions described herein. It is not intended to be limited to any particular embodiment of the steps.

[0356] As will be readily apparent to those skilled in the art from this disclosure, the corresponding embodiments described herein may be Any currently existing method or system that performs substantially the same function or achieves substantially the same result as the present embodiment. Any existing or later developed process, machine, manufacture, composition of matter, means, or method or steps may be utilized. Accordingly, the appended claims are intended to encompass such including within its scope any process, machine, manufacture, composition of matter, means, methods, or steps This is the intention.

[0357] As will be understood, the examples illustrated above are intended to be illustrative only. do.

Claims

1. A processor coupled to computer memory and data storage: Receive one or more datasets that show monitored network communication characteristics; Maintain a hierarchical representation of multiple connections separated into multiple groups in a data structure stored on data storage, and establish each group based at least on the minimum probability associated with the successful communication of data packets through one or more connections residing within the group; Controlling multiple communications of a data packet, and performing this control such that the data packet is transmitted at least once through one or more of the connections, and that, as a whole, the multiple communications satisfy a target probability threshold of success related to the successful communication of the data packet through one or more of the connections. The configured processors include, The processor is a network router computing device configured to maintain one or more state machines for classifying each of the plurality of connections.

2. The network router computing device according to claim 1, wherein the retransmission is performed via connections of different hierarchical levels.

3. The network router computer according to claim 1, wherein the plurality of communications include retransmission via connections between different layers of the plurality of corresponding layers.

4. The network router computing device according to claim 1, wherein an additional group within the plurality of groups is an uncertain group established for connections that do not have enough data to evaluate reliability, or an unreliable group established for connections that have been shown to be below a data communication threshold reliability.

5. The network router computing device according to claim 4, wherein the membership of the uncertain group or the unreliable group is periodically modified so that connections are classified into multiple groups.

6. The network router computing device according to claim 4, wherein the connections of the plurality of groups are periodically monitored, and if the connection data becomes outdated or shows a decrease in reliability, membership is moved to the uncertain group or the unreliable group.

7. The network router computer according to claim 4, wherein the uncertainty group is used for the communication of data packets using the assigned confidence probability.

8. The network router computing device according to claim 7, wherein the assigned reliability probability is periodically adjusted based on monitored network communication characteristics.

9. The network router computer according to claim 4, which moves connections that have been requested to transmit or retransmit more times than a threshold to the uncertain group or the unreliable group.

10. The network router computer according to claim 4, wherein the processor is further configured to periodically transmit data packets over the connections of the uncertain group or the unreliable group, and the periodic transmission of the data packets incorporates a backoff timer that reduces overall system inefficiency.

11. The network router computing device according to claim 1, wherein one or more state machines are adapted to control the classification of corresponding connections among the corresponding connections in the hierarchy as trustworthy or untrustworthy.

12. The network router computing device according to claim 11, wherein one or more state machines are adapted to control the classification of the corresponding connections as uncertain, in addition to being reliable or unreliable.

13. The network router computing device according to claim 11, wherein the one or more state machines are periodically updated to modify the classification of the corresponding connections as trustworthy or untrustworthy.

14. The network router computing device according to claim 11, wherein the one or more state machines control the group transitions of the one or more connections.

15. The network router computing device according to claim 1, which is a portable communication controller that can be carried by a person.

16. The network router computing device according to claim 1, which is a portable communication device that is attached to a vehicle.

17. The network router computing device according to claim 1, which is a portable communication device permanently stationed within a communication relay station.

18. Receiving one or more datasets that show monitored network communication characteristics; Maintaining a hierarchical representation of multiple connections separated into multiple groups in a data structure stored on data storage, wherein each group is established based on at least the minimum probability associated with the successful communication of data packets through one or more connections residing within the group; Controlling multiple communications of a data packet, and performing this control such that the data packet is transmitted at least once through one or more of the connections, and that, as a whole, the multiple communications satisfy a target probability threshold of success related to the successful communication of the data packet through one or more of the connections. Maintaining one or more state machines for classifying each of the aforementioned multiple connections, A method for performing network communication, which includes [the following].

19. The method according to claim 18, wherein the retransmission is performed via connections of different hierarchical levels.

20. The method according to claim 18, wherein the plurality of communications include retransmission via connections between different layers of the plurality of corresponding layers.

21. The method according to claim 18, wherein an additional group within the plurality of groups is an uncertain group established for connections that do not have enough data to evaluate reliability, or an unreliable group established for connections that have been shown to be below a threshold reliability for data communication.

22. The method according to claim 21, wherein the membership of the uncertain group or the unreliable group is periodically modified so that the connections are classified into a plurality of groups.

23. The method according to claim 21, wherein the connections of the plurality of groups are periodically monitored, and if the connection data becomes outdated or indicates an increase in reliability, membership is moved to the uncertain group or the unreliable group.

24. The method according to claim 21, wherein the uncertainty group is used for the communication of data packets using the assigned confidence probability.

25. The method according to claim 24, wherein the assigned reliability probability is periodically adjusted based on monitored network communication characteristics.

26. The method according to claim 21, wherein the number of times transmission or retransmission has been requested exceeds a threshold, the connection is moved to the uncertain group or the unreliable group.

27. The method according to claim 21, comprising periodically transmitting data packets over the connection of the uncertain group or the unreliable group, wherein the periodic transmission of the data packets incorporates a backoff timer that reduces overall system inefficiency.

28. The method according to claim 18, wherein one or more state machines are adapted to control the classification of corresponding connections among the corresponding connections in the hierarchy as either trustworthy or untrustworthy.

29. The method according to claim 28, wherein one or more state machines are adapted to control the classification of the corresponding connections as uncertain, in addition to being reliable or unreliable.

30. The method of claim 28, wherein the one or more state machines are periodically updated to modify their classification of the corresponding connections as trustworthy or untrustworthy.

31. The method according to claim 28, wherein the one or more state machines control the group transitions of the one or more connections.

32. The method according to claim 18, which is performed on a portable communication controller that can be carried by a person.

33. The method according to claim 18, which is performed on a portable communication device attached to a vehicle.

34. The method according to claim 18, which is performed on a portable communication device permanently stationed within a communication relay station.

35. A non-temporary computer-readable medium that, when executed by a processor, stores a non-temporary instruction causing the processor to perform the method according to any one of claims 18 to 34.