SELECTIVE FORWARDING, PRIORITIZATION, AND QUEUEING BY EDGE DEVICES

A method of selectively forwarding data transmissions to a wide area network includes receiving, from at least one local device and by a network device interposed between the at least one local device and the wide area network, first and second data transmissions intended for first and second destination addresses, respectively, accessible through the wide area network, detecting that a connection between the network device and the wide area network has been interrupted, storing the first data transmission and the second data transmission to a storage device electronically connected to the network device, and detecting that the connection has been restored. The method further includes generating a forwarding order by analyzing the first data transmission and the second data transmission using a forwarding rules engine, the forwarding order describing an order in which to transmit the first data transmission and the second data transmission.

FIELD OF THE INVENTION

The present disclosure relates to network systems and, more particularly, systems and methods for selectively forwarding data transmissions from a local network to a wide area network (WAN).

BACKGROUND

Devices connected to a local network often access resources hosted by servers and other devices connected to another network, such as a WAN. Interruptions to the connection between the local network and the outside network can disrupt functions of devices connected to the local network that are dependent on resources hosted on the outside network.

SUMMARY

An example of a method of selectively forwarding data transmissions to a wide area network includes receiving, from at least one local device and by a network device interposed between the at least one local device and the wide area network, a first data transmission intended for a first destination address accessible through the wide area network and a second data transmission intended for a second destination address accessible through the wide area network, detecting that a connection between the network device and the wide area network has been interrupted, storing the first data transmission and the second data transmission to a storage device electronically connected to the network device, and detecting that the connection has been restored. The first data transmission and second data transmission are stored after detecting that the connection has been interrupted, and the network device detects that the connection has been restored after storing the first data transmission and the second data transmission. The method further includes generating, by the network device and after detecting that the connection has been restored, a forwarding order by analyzing the first data transmission and the second data transmission using a forwarding rules engine, the forwarding order describing an order in which to transmit the first data transmission and the second data transmission. After generating the forwarding order, the first data transmission is transmitted from the storage device to the first destination address and the second data transmission is transmitted from the storage device to the second destination address. The first data transmission and the second data transmission are transmitted according to the forwarding order.

An example of a system includes a network device connected to a local device and to a wide area network. The local device is configured to transmit data to at least one destination address accessible through the wide area network. The network device is configured to receive data transmissions from the local device and to selectively forward data transmissions to destination addresses accessible through the wide area network, and includes a processor and memory. The memory is encoded with instructions that, when executed, cause the processor to receive, from the at least one local device, a first data transmission directed to a first destination address accessible through the wide area network and a second data transmission directed to a second destination address accessible through the wide area network. The instructions further cause the processor to detect that a connection between the network device and the wide area network has been interrupted, store the first data transmission and the second data transmission to a storage device electronically connected to the network device in response to detecting that a connection between the network device and the wide area network has been interrupted, detect, that the connection has been restored, after storing the first data transmission and the second data transmission, and analyze, in response to detecting that the connection has been restored, the first data transmission and the second data transmission using a forwarding rules engine to generate a forwarding order, the forwarding order describing an order in which to transmit the first data transmission and the second data. The instructions cause the processor to transmit, after generating the forwarding order, the first data transmission from the storage device to the first destination address and the second data from the storage device to the second destination address according to the forwarding order.

DETAILED DESCRIPTION

The present description relates to systems and methods for selective forwarding of outgoing data transmissions from a queueing network device. The queueing network devices of the present description are able to be integrated into existing local networks at a point between the local network and an outside or external network, such as the Internet or another WAN, that causes network traffic to pass through the queueing network device and allows the queueing network device to selectively forward outgoing transmissions or store the outgoing transmissions for later forwarding. The queueing network devices of the present description are also able to create forwarding orders that can be used to queue or otherwise create an order in which a group of outgoing data transmissions can be transmitted from a local network to a WAN.

Applications and software are often reliant on a persistent or continuous network connection and can encounter errors in attempting to transmit data to a WAN (e.g., the Internet) when the connection to the WAN is interrupted. Advantageously, the systems and methods disclosed herein allow for data transmissions from local devices to be temporarily stored when a connection to a WAN is disrupted (e.g., in examples where a network connection is intermittent) and be uploaded by a queueing network device located between the local devices and the WAN when the connection to the WAN is restored.

Further, the systems and methods disclosed herein allow for outgoing data transmissions to be temporarily stored by a queueing network device when data transmission and/or access to a WAN or a WAN-connected resource is associated with increased costs and uploaded at a subsequent point in time when the access of the WAN or WAN-connected resource does not incur the increased costs. Further, the systems and methods disclosed herein can advantageously be performed by a single device that can be incorporated into existing network structures with minimal modification of those existing network structures. Rather, the systems and methods disclosed herein allow for the creation of a queueing network device capable of inspecting outbound data transmissions and automatically determining whether to forward data transmissions or temporarily store the data transmissions to local storage. The local storage used to temporarily store data transmissions is accessible by the queueing network device and can be integrated without modification of the local devices connected to the queueing network device. Accordingly, the queueing network devices disclosed herein can advantageously be integrated into existing local networks with significantly less labor and at lower cost than existing techniques for providing delayed data transmission forwarding for intermittently-connected and/or metered/data-capped networks.

FIG.1is a schematic diagram of system100, which is a system for data transmission queueing and prioritization. More specifically and as will be described in more detail subsequently, system100allows for queueing and prioritization of uploads or outbound data transmissions. System100includes local devices110A-N, queueing network device120, and destination addresses142A-N. Queueing network device120is a device of local network130and is in electronic communication with wide area network (WAN)140, through which destination addresses142A-N are accessible. Local devices110A-N include processors112A-N, memories114A-N, and user interfaces116A-N. Local device110A includes camera117A capturing scene118A. Local device110B includes camera117B capturing scene118B and further includes AR/VR device119. Queueing network device120includes processor122, memory124, and user interface126. Queueing network device is connected to WAN140via communication link141. Destination address142A corresponds to server144, destination address142B corresponds to database146, and destination address142C corresponds to cloud compute cluster148. Server144includes processor152, memory154, and user interface156. Destination address142B corresponds to database146and destination address142C corresponds to cloud compute148. Queueing network device120includes storage160, and memory124includes network inspection module170, and forwarding module180.

Local devices110A-N are electronic devices connected to queueing network device120. Local devices110A-N are collectively referred to herein as “local device110” or “local devices110.” Local devices110A-N include processors112A-N, memories114A-N, and user interfaces116A-N, respectively. Each of local devices110A-N can be, for example, a computer, an unmanned aerial vehicle, an electronic sensor, a computer vision device, an automated guided vehicle, a virtual reality device, or an augmented reality device, among other options. All of local devices110A-N include networking capability such that each local device110can connect to queueing network device120and/or another component of network130that is in communication with queueing network device120. Local devices110A-N can be connected via a wireless and/or wired connection to queueing network device120and/or local network130. Each local device110can be directly connected to queueing network device120and/or can be connected queueing network device120via one or more interposed components of network130. In examples where a local device110is directly connected to queueing network device120, the local device110can send data directly to and receive data directly from queueing network device120. In examples where a local device110is connected to queueing network device120via one or more interposed components of local network130(e.g., one or more routers, switches, gateways, etc.), the local device110can send data to and receive data from queueing network device120through the intervening components.

Each of processors112A-N can execute software, applications, and/or programs stored on memories114A-N, respectively. Examples of processors112A-N can include one or more of a processor, a microprocessor, a controller, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other equivalent discrete or integrated logic circuitry. Each of processors112A-N can be entirely or partially mounted on one or more circuit boards.

Each of memories114A-N is configured to store information and, in some examples, can be described as a computer-readable storage medium. Each of memories114A-N, in some examples, can be described as computer-readable storage media. In some examples, a computer-readable storage medium can include a non-transitory medium. The term “non-transitory” can indicate that the storage medium is not embodied in a carrier wave or a propagated signal. In certain examples, a non-transitory storage medium can store data that can, over time, change (e.g., in RAM or cache). In some examples, one or more of memories114A-N is a temporary memory. As used herein, a temporary memory refers to a memory having a primary purpose that is not long-term storage. One or more of memories114A-N, in some examples, is described as volatile memory. As used herein, a volatile memory refers to a memory that that the memory does not maintain stored contents when power to the memory is turned off. Examples of volatile memories can include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories. In some examples, the memory is used to store program instructions for execution by the processor. The memory, in one example, is used by software or applications running on a local device110to temporarily store information during program execution.

One or more of memories114A-N, in some examples, also includes one or more computer-readable storage media. Memories114A-N can be configured to store larger amounts of information than volatile memory. One or more of memories114A-N can further be configured for long-term storage of information. In some examples, one or more of memories114A-N includes non-volatile storage elements. Examples of such non-volatile storage elements can include, for example, magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories.

User interfaces116A-N are input and/or output devices and enable an operator to control operation of local devices110A-N, respectively. Each of user interfaces116A-N can include one or more of a sound card, a video graphics card, a speaker, a display device (such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, etc.), a touchscreen, a keyboard, a mouse, a joystick, or other type of device for facilitating input and/or output of information in a form understandable to users and/or machines.

Local device110A and local device110B are connected to camera117A and camera117B, respectively. Camera devices117A,117B are devices for capturing video data. Camera devices117A,117B are in electronic communication with local devices110A,110B and are capable of sending captured video to local devices110A,110B. Camera devices117A,117B are shown as separate devices from local devices110A,110B inFIG.1, but in other examples camera117A and/or camera117B can be integrated and form a single device with local device110A and local device110B, respectively. In the depicted example, camera117A captures video data of scene118A and camera117B captures video data of scene118B. In the depicted example, scene118A is footage of an assembly line and scene118B is footage from a camera in a natural setting (e.g., a wildlife or trail camera). Local device110B is also connected to AR/VR device119. AR/VR device119is an augmented reality and/or virtual reality device that is connected to local device110and is usable by user190.

Local devices110can send data to WAN140and, more specifically, to devices corresponding to destination addresses142A-N for further processing. For example, if queueing network device120is connected to a local device having a camera capturing data, such as camera117A capturing data of scene118A or camera117B capturing data of scene118B, the local device can send the camera data through queueing network device120and through WAN140to a destination address142A-N. The destination address142A-N can correspond to a device configured to analyze the camera data. Where the camera data captures footage of an assembly line (e.g., scene118A), the device can analyze the data to, for example, identify manufacturing defects visible in the footage. Where the camera data is from a wildlife or trail camera (e.g., scene118B), the device can analyze the data to, for example, identify wildlife and/or count a number of animals present in the camera data. As a further example, if queueing network device120is connected to a local device having an AR or VR device, such as AR/VR device119, the local device can send the camera data through queueing network device120and through WAN140to a destination address142A-N. The destination address142A-N can correspond to a device configured to analyze the AR or VR data. The device can analyze the AR or VR data to, for example, understand patterns in user behavior while using the AR or VR device.

Queueing network device120is an edge device of network130. As will be explained in more detail subsequently, queueing network device120is capable of temporarily storing and later forwarding outgoing data transmissions from local devices110A-N to destination addresses142A-N. Queueing network device120is also capable of receiving data from WAN140and forwarding that data to local devices110. More specifically, queueing network device120is also capable of receiving outbound network data from local devices110and selectively forwarding received outbound network data to destination addresses142A-N. Queueing network device120is further capable of receiving inbound network data from destination addresses142A-N and transmitting the inbound network data to local devices110. The inbound and/or outbound data can be, for example, one or more network packets. In some examples, the data received by queueing network device120from local devices110includes requests for data stored at one of destination addresses142A-N. Additionally and/or alternatively, the data received by queueing network device120from local devices110includes media data and/or data from an augmented reality (AR) device and/or a virtual reality (VR) device. The media data can include video data, image data, audio data, and/or other options. The data can be sent to a destination address142A-N by a local device110for storage (e.g., as a data backup) and/or for analysis (e.g., to extract features, identify objects, etc.).

Queueing network device120includes processor122and memory124, which are substantially similar to processors112A-N and memories114A-N, respectively. Queueing network device120can also optionally include user interface126, which is substantially similar to user interfaces116A-N. In some examples, queueing network device120does not include a user interface and can be configured and/or operated using, for example, another device connected to queueing network device120, such as a local device110or another component of local network130.

System100optionally includes local network130, which includes one or more devices interposed between local devices110and queueing network device120and/or between queueing network device120and WAN140. In examples of system100that include local network130, queueing network device120is a component of local network130and is connected to one or more other components of local network130. Local network130can include any suitable combination of hardware devices such as, for example, one or more additional routers, switches, hubs, modems, bridges, and/or gateways, among other options. Local network130can be a wired or wireless network and can include one or more switches, routers, gateways, or other suitable network infrastructure. Local network130can be, for example, a local area network, a campus area network, a metropolitan area network, or another suitable network type. Generally, local network130connects local devices110that are separated by smaller geographic distances than the devices of WAN140. In at least some examples, local network130is a private cellular network (PCN) including one or more PCN gateway devices. In these examples, each of local devices110can be connected directly to the PCN and/or can be connected to the PCN via a gateway device.

In examples where system100does not include local network130, local devices110can be directly connected to queueing network device120and queueing network device120can be directly connected to WAN140. Where queueing network device120is directly connected to WAN140and local devices110, the position of queueing network device120causes all data transmissions to and from local devices110to pass through queueing network device120. In examples where system100does include other components that form local network130, queueing network device120is positioned in local network130such that all data transmissions to and from local devices110to pass through queueing network device120. Local network130can be constructed to include a hierarchy to allow all data transmissions to and from local devices110to pass through queueing network device120. For example, queueing network device120can be positioned on the edge of local network130. Advantageously, positioning queueing network device120such that all inbound and outbound data transmissions to and from local devices110is received by queueing network device120allows queueing network device120to control data transmissions across communication link141, the advantages of which are discussed subsequently.

WAN140is a wide area network suitable for connecting servers and other computing devices that are separated by greater geographic distances than the devices of local network130. WAN140includes network infrastructure for connecting devices separated by larger geographic distances. In at least some examples, WAN140is the Internet. Communication link141connects queueing network device120and/or another component of local network130to WAN140, such that queueing network120is able to receive data from local devices110and forward the received data to WAN140, and further such queueing network device120can receive data from devices connected to WAN140and forward the received data to local devices110.

Communication link141can be a wired or wireless connection and connects queueing network device120to WAN140. In at least some examples, communication link141is a satellite connection. In operation, communication link141can be disrupted, such that queueing network device120becomes disconnected from WAN140and, consequently, local devices110are not able to access WAN140and send requests to destination addresses142A-N. In these examples, communication link141can be referred to as an “intermittent connection.” The disruptions to communication link141are generally temporary but can persist for extended periods of time while repairs, maintenance, or other suitable steps are taken to restore communication link141. For example, where communication link141is a wireless connection, poor signal quality can cause disruption of communication facilitated by communication link141between the devices of local network130and the devices of WAN140. As a further example, where communication link141is a wired connection, mechanical damage to communication link141can disrupt communication between local devices110and WAN140. While communication link141is disrupted, local devices110and other devices of local network130are not able to communicate with and transmit data to devices connected to WAN140.

Destination addresses142A-N are network addresses to and from which data can be transmitted by queueing network device120and correspond to electronic devices connected to WAN140. Destination addresses142A-N are accessible via WAN140and can each correspond to any suitable device. In the depicted example, destination address142A corresponds to server144, destination address142B corresponds to database146, and destination address142C corresponds to cloud compute cluster148. Each of destination addresses142A-N corresponds to an electronic device that is not directly connected to local devices110, queueing network device120, or local network130, such that data transmissions directed to destination addresses142A-N are facilitated through the devices and systems of WAN140. More specifically, a data transmission from a local device110directed to one of destination addresses142-N can be transmitted to queueing network device120, which can then forward the data transmission to WAN140(i.e., directly or via another upstream component of network130).

Server144is an electronic device that can store data and/or perform compute tasks. While server144is generally referred to herein as a server, server144can be any suitable computing device for storing data and/or performing compute tasks. Server144includes processor152and memory154, and optionally includes user interface156. Processor152and memory154are substantially similar to processors112A-N,122and memories114A-N,124, respectively. User interface156is substantially similar to user interfaces116A-N,126. In some examples, server144does not include a user interface and can be configured and/or operated using, for example, another device connected the server(s)144via WAN140or another suitable network.

Database146is a network-accessible database for storing data from local devices110and/or other devices capable of accessing WAN140. Database146includes machine-readable data storage capable of retrievably housing stored data, such as database or application data. In some examples, database146includes long-term non-volatile storage media, such as magnetic hard discs, optical discs, flash memories and other forms of solid-state memory, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories. Database146can organize data using a relational database management system (RDBMS), object-relational database management system (ORDBMS), columnar database management systems (CDBMS), document-oriented database management systems (DoDBMS) and/or a multi-model database management system (MMDBMS). Local devices110can query database146to retrieve data and further can store and/or back up data to database146. Database146can include one or more devices substantially similar to server144and configured to perform the functions of a database.

Cloud compute cluster148is connected to WAN140and is a network-accessible compute unit or cluster for performing one or more data operations. Cloud computer cluster148includes one or more linked computing devices and can, for example analyze data sent from a local device110and send a response to the local device110. Cloud compute cluster148can include one or more devices substantially similar to server144and configured to perform the functions of a WAN-accessible computing cluster.

Each of server144, database146, and cloud compute cluster148are connected to WAN140and data can be transmitted to server144, database146, and compute cluster148using destination addresses142A,142B,142C, respectively. Each outgoing data transmission from a local device110is directed to a destination address142A-N of WAN140. For example, local device110B can send a data transmission including camera data from camera117B to destination address142B to allow the camera data to be backed up to database146. Similarly, local device110A can send a data transmission including camera data from camera117A to destination address142B to allow the camera data from camera117A to be backed up to database146. As a further example, local device110B can data from AR/VR device119to destination address142B to be backed up to database146, to destination address142C to allow cloud compute cluster148to perform one or more operations on the AR/VR data, and/or to destination address142A to allow server144to perform one or more operations on the AR/VR data.

Storage160is a physical or virtual data storage element that is configured to store outbound data transmissions from local devices110A-N. Queueing network device120can store data transmissions to storage160and can also retrieve stored data transmissions from storage160for forwarding. The data transmission can be, for example, a request for data from a device at a destination address142A-N or data to be stored or backed up to a device at a destination address142A-N. As queueing network device120is positioned between local devices110A-N and WAN140such that all outbound data transmissions from local devices110A-N pass through queueing network device120, queueing network device120can inspect outbound data transmissions and, as will be explained in more detail subsequently, store outbound data transmissions to storage160when communication link141is disrupted. As will also be explained in more detail subsequently, queueing network device120can inspect the stored outbound data transmissions and selectively forward the stored data transmissions to WAN140when communication link141is restored. In some examples, queueing network device120can also selectively store outbound data transmissions when, for example, communication link152is metered such that there are increased costs associated with transmitting data to WAN140via communication link141. In some examples, memory124can include multiple memory devices and storage160can be stored on a hardware memory device of queueing network device120that is different than the memory device that stores network inspection module170, forwarding module180, or other software components of queueing network device120. Additionally and/or alternatively, storage160can be stored to a partition and/or volume of a memory device (e.g., memory124) that also stores network inspection module170, forwarding module180, and/or other software components of queueing network device120. Storage160can be configured to store unforwarded outbound data transmissions indefinitely and/or for a particular period of time. The period of time can be selected based on, for example, the content of the outbound data transmission, the intended destination address of the outbound data transmission, or any other suitable attribute of the data transmission and/or another element of system100.

Network inspection module170includes one or more programs for determining the status of communication link141. The program(s) of network inspection module170can be executed by processor122. Network inspection module170can inspect the status of communication link141by, for example, sending a test communication to one of destination addresses142A-N or another device connected to WAN140that is configured to elicit a response from the destination address142A-N or other WAN-connected device. The presence or absence of a received response to the test communication can be used to determine the status of communication link141. As a further example, network inspection module170can cause processor122to send a request to another element of network130to determine the status of communication link141. For example, network inspection module170can be configured to send a request to a router or another network device to determine whether communication link141is available. In other examples, network inspection module170can use another suitable method of determining the status of communication link141. In some examples, network inspection module170can include one or more programs configured to determine whether communication link141is metered or data-capped. As will be explained in more detail subsequently, whether communication link141is metered or data-capped can be used to determine whether to forward outbound data transmissions across communication link141by the programs of forwarding module180.

Forwarding module180includes one or more programs for determining whether to forward data transmissions received from a local device110to WAN140. The program(s) of forwarding module180can be executed by processor122. Forwarding module180includes a forwarding rules engine that can be used to determine whether to forward network data from local device110. The forwarding rules engine includes one or more conditional rules that queueing network device120can use to determine whether to forward a data transmission from a local device110to WAN140and/or a destination address142A-N or to store the transmission for forwarding at a later time. The forwarding rules engine can cause queueing network device120to selectively forward a data transmission based on, for example, the domain of a destination address142A-N of the data transmission, network address information for a destination address142A-N, the content of the data transmission, a data type of the data transmission (e.g., if the data is text data, video data, etc.), a memory or file size of the data transmission, and/or the status of communication link141(e.g., the availability of communication link141, the bandwidth available over communication link141, etc.), among other options. The forwarding rules engine can include conditional rules for any attribute of a data transmission and/or any element(s) of system100that are useful for determining whether to forward or store a data transmission for subsequent forwarding, including any of the aforementioned properties of a data transmission or system100(including the properties of communication link141). Further, in some examples, the forwarding rules engine can include a trained computer-implemented machine-learning model configured to accept elements or aspects of a request or system100and to output a determination of whether to forward a request, as discussed in more detail subsequently. In other examples, the forwarding rules engine can be formed of components of forwarding module180and network inspection module170, such that the forwarding rules engine is capable of performing logic related to determining the availability of WAN140and detecting whether communication over communication link141has been interrupted.

In some examples, certain data transmissions from a local device110having high value may be generally concentrated toward a single destination address. The domain of the target of the data transmission (i.e., of the target destination address142A-N) can be used to distinguish between high-priority and low-priority data transmissions by the forwarding rules engine. Similarly, in some examples, a particular local device110or group of local devices110may be transmitting data that is considered higher priority than other local devices110. For example, where local devices110include cameras capture video content of a location from multiple angles and/or positions, certain scenes may be considered more important for transmission and/or backup to a destination address142A-N. Queueing network device120can use the forwarding rules engine to inspect local device110network address information to selectively upload and/or prioritize uploads from certain local devices110. The content and/or data type of the data transmission can also be used to distinguish different types of outgoing data transmissions. For example, data having a particular file type may be considered to be more important in a particular context or implementation of queueing network device120, and queueing network device120can accordingly prioritize transmission of those file types when communication link141is available. As a further example, queueing network device120can be configured to scan outgoing data transmission to determine the content of the data transmission and selectively forward and/or prioritize certain data transmissions based on the content of those data transmissions. As a specific example, where the data transmissions are video footage from a camera device (e.g., camera117A or camera117B), queueing network device120can use one or more computer-implemented machine-learning models to recognize objects in the video footage and selectively upload and/or prioritize the uploading of video footage including particular objects. Queueing network device120can also use the file or memory size of a data transmission to determine whether and in what order to upload outgoing data transmissions. For example, it may be advantageous in some systems to selectively upload smaller files, and then to later upload larger files. In other examples, other combinations or particularities of file or memory size may be useful to selectively transmitting data and/or prioritizing the transmission of data by queueing network device120.

Further, forwarding module180can also be used to store data for later forwarding when communication link141is operable but transmission across communication link141is metered or data-capped. For example, if communication link141is metered or data-capped during particular time periods, queueing network device120can selectively store outgoing data transmissions to avoid costs during those particular time periods and then upload or forward the stored transmissions at a later time when communication link141is not metered or data-capped. For example, program(s) of network inspection module170can classify communication link141as disrupted or otherwise unavailable during a metered or data-capped time period and program(s) of forwarding module180can accordingly store outbound data transmissions to storage160for later forwarding outside of the metered or data-capped time period. As a further example, program(s) of forwarding module180can receive a classification from program(s) of network inspection module170that communication link141is metered or data-capped, and the status of communication link141as metered or data-capped can be used by the forwarding rules engine to selectively forward certain outgoing data transmissions and store other outgoing data transmissions. For example, the forwarding rules engine can be configured to cause processor122to store data transmissions over a certain size when communication link141is metered or data-capped and to forward data transmissions under that size. Forwarding module180can apply similar logic to examples where bandwidth across communication link141is limited. If bandwidth across communication link141is limited, queuing network device120can, for example, prioritize data transmissions having a lower file size and/or data transmissions that are particularly important (i.e., for a particular application or system in which queueing network device120is deployed) according to the other rules of the forwarding rules engine. Forwarding module180can be configured to allow queueing network device120to compare available bandwidth to transmission size in order to more efficiently utilize communication link141when bandwidth is limited. Advantageously, storing large files to storage160when bandwidth is limited can free bandwidth over communication link141for other data transmissions from local devices110and/or devices of WAN140.

If communication link141is disrupted such that data cannot be transmitted from queueing network device120to WAN140, forwarding module180can cause processor122to store outbound requests to storage160. When communication link141is restored, forwarding module180can cause processor122to forward stored requests to the appropriate destination address142A-N. Further, forwarding module180can also be used to create a forwarding order to prioritize the transmission of certain data when communication link141is restored. For example, forwarding module180can first cause processor122to forward data of a particular type, particular size, or directed for a particular destination address and then to forward data of another particular type, of a particular size, or directed to another particular destination address. In some examples, data stored to storage160can be prioritized and transmitted in a transmission-by-transmission manner when communication link141is restored. Additionally and/or alternatively, data stored to storage160can be sorted into groups or tiers, and prioritized and transmitted group-by-group or tier-by-tier when communication link141is restored. In yet further examples, data stored to storage160can be transmitted when communication link141is restored without being ordered or prioritized.

System100and queueing network device120provide a number of advantages. Queueing network device120allows for selective storage of outgoing data transmissions and later forwarding of the stored outgoing data transmissions without requiring the applications of local devices110to be configured to store the outgoing data transmissions or queue data that was not successfully transmitted to be transmitted after when communication link141is available and/or when communication link is not metered or data-capped. Rather, queueing network device120can scan outgoing data transmissions and selectively store (and later forward) data transmissions independently of the operation of local devices110. Further, as described previously, the position of queueing network device120between local devices110and WAN140allows all outbound requests to passively be transmitted through (i.e., be received by) queueing network device120. That is, by positioning queueing network device120at a funnel or chokepoint (e.g., of local network130) between local devices110and WAN140, queueing network device120can intercept and scan all requests from local network110devices to WAN140devices without requiring local devices110or applications running on local devices110to be configured to specifically send data to queueing network device120. In this manner, queueing network device120is advantageously able to provide temporary data transmission storage and later, subsequent forwarding to local devices110and applications of local devices110that are not otherwise configured to store and subsequently forward data transmissions. Queueing network device120is thereby advantageously able to be incorporated into existing systems and does not require any modification of other devices of those existing systems to provide selective data storage and forwarding capabilities, as described herein.

Queueing network device120confers advantages to systems where communication link141is subject to relatively frequent disruption, such as where communication link141is a wireless connection (e.g., a cellular or satellite connection). For example, in applications of remotely placed camera systems, queueing network device120can be added between the camera system and a cellular or satellite connection to queue and prioritize data backup of the camera data generated by the camera system. In some examples, cameras may be placed to collect valuable footage in relatively remote locations, such that wired connections are not available. Using the example of scene118B described with respect toFIG.1, a trail camera or wildlife camera is likely to be placed in a location where connection to a WAN is facilitated by a disruptable wireless connection. Queueing network device120can be added to such a camera system to allow programs or systems that expect a continuous and/or persistent WAN connection to be used with minimal or no reconfiguration. Similarly, using the example of scene118A described with respect toFIG.1, a factory or assembly line may be positioned to be located next to important or strategic resources where it may be difficult to provide camera117A with a wired connection. A disruptable wireless connection may be used instead of a wired connection to decrease costs associated with installation. In other examples, there may be other considerations that make it advantageous to connect a factory environment to a WAN using a disruptable wireless connection. In those examples, queueing network device120can provide local network-wide transmission queueing without requiring further investment in reconfiguration of software or programs that expect a continuous and/or persistent network connection. Further, in some examples, it may be advantageous to deploy an AR or VR apparatus (e.g., AR/VR device119) in a remote location. Such a deployment may be temporary and further it may be difficult to connect a remote location with a wired connection. Queueing network device120can be installed in such a system to allow applications of the AR or VR system that expect a persistent and/or continuous network connection to run without encountering errors or requiring reconfiguration. Queueing network device120also provides the aforementioned advantages to systems connected to a WAN via a wired connection. For example, a wired connection extending through a remote area may be subject to mechanical damage from weather, animals, etc.

For some legacy systems, it can be significantly time- and labor-intensive to upgrade systems of a local network110to detect the status of communication link141and queue outgoing data transmissions when communication link141is interrupted or inoperable. Advantageously, queueing network device120can store and selectively forward data transmissions from legacy systems without requiring upgrading of those legacy systems.

Notably, queueing network device120stores data transmissions from local devices110without creating any error messages or otherwise alerting local devices110of the status of communication link141. Advantageously, this can reduce the incidence of errors that disrupt the operation of local devices110and/or require intervention from a human operator to remedy. Further, local devices110are not required to be configured to detect the status of communication link141when queueing network device120is used, as queueing network device120handles logic and queueing of outgoing data transmissions as well as temporary storage of outgoing data transmission when communication link141is unavailable.

As described previously, in some examples, communication link141may be a data-capped connection or a connection that is metered by a service provider (e.g., by an internet service provider), such that reducing data transferred across communication link141can reduce costs associated with operating communication link141. Additionally and/or alternatively, accessing and/or receiving a return from a destination address142A-N may incur costs from the entity maintaining the device to which the destination address142A-N corresponds. For example, cloud compute cluster148can be monetized such that data requests to cloud compute cluster148require payment to be processed. Further, cloud compute cluster148can be monetized such that the payment rate for processing a request varies based on time of day, day of week, or another time-based element. Queueing network device120can advantageously reduce data transfer during period where payment is required or where increased payment is required to process outgoing requests without requiring reconfiguration of local devices110or the applications of local devices110. Specifically, queueing network device120can block outgoing data transmissions during those time periods and store the transmissions to storage160. Queueing network device120can then deliver those data transmissions during a later time period when payment is not required or when increased payment is not required. As described previously, queueing network device120can be integrated into existing networks to reduce data consumption and transmission across a data-capped or metered communication link without requiring reconfiguration of any local devices of the network or of any applications of those devices.

WhileFIG.1depicts only three local devices110A-N and four destination addresses142A-N, in other examples, system100can include any other suitable number of local devices110A-N and destination addresses142A-N. WhileFIG.1also depicts destination address142A as corresponding to server144, destination address142B as corresponding to database146, and destination address142C as corresponding to cloud compute cluster148, each of destination addresses142A-N can correspond to any suitable electronic device or system. Further, whileFIG.1depicts only one queueing network device120, in some examples, multiple queueing network devices120can be positioned at various choke or funnel points between local network130and WAN140.

Queueing network device120can be a custom device incorporated at a funnel or chokepoint at an edge location between local devices110and communication link141(e.g., at an edge of an existing local network130). Additionally and/or alternatively, queueing network device120can be created by providing an existing network edge device with storage160and the programs of network inspection module170and forwarding module180. For example, if storage160is relatively small in size, an existing network edge device can be configured with network inspection module170and forwarding module180to function as queueing network device120without additional hardware modification of the existing network edge device. In examples where storage160requires more storage than is available on an existing network edge device, the existing network edge device can be provided with additional hardware memory elements such that the existing network edge device has sufficient storage for storage160. The existing edge device can be, for example, a router, a switch, or a gateway, among other options.

Notably, existing methods of queueing outbound data transmissions require creation or modification of software in an application-by-application and/or device-by-device manner. Accordingly, these existing methods are often labor-intensive and expensive to implement. Conversely, system100allows for a queueing network device120to perform forwarding logic for all devices connected to the queueing network device and/or local network130, and thereby does not require any reconfiguration or modification of local devices110or the applications or programs thereof to provide transmission forwarding logic.

Further, although queueing network device120has been described herein as a single device, in some examples the network and forwarding functions and the storage function of queueing network device120can be incorporated into separate devices, such that queueing network device120is composed of separate storage and edge devices.FIG.2depicts system200, which is another example of a system for outbound request queueing and prioritization that separate storage and edge devices. System200is substantially similar to system100but includes queueing system220instead of queueing network device120. Queueing system220includes edge device221and storage device260. Edge device221includes processor222and memory224, and optionally includes user interface226. Processor222is substantially similar to processor122; memory224is substantially similar to memory124, and user interface226is substantially similar to user interface126. Storage device260includes storage and can optionally include a processor, memory, and/or a user interface. The storage, processor, memory, and user interface can be substantially similar to storage160, processor122, memory124, and user interface126, respectively. Advantageously, system200allows for a separate storage device260having a relatively large size to be combined with existing network edge devices to form a queueing system, reducing the cost and labor required to incorporate queueing systems and devices according to the present disclosure into existing local networks.

In system200, edge device221is connected to WAN140and local devices110directly and/or via one or more components of local network130. Edge device221includes network inspection module170and forwarding module180. Storage device260is directly connected to edge device221such that edge device221is able to store and request data from storage device260. In system200, edge device221performs the forwarding and inspection functions of queueing network device120and storage device260performs the functions of storage160, as described previously with respect toFIG.1.

In operation, edge device221receives and forwards transmissions between local devices110and the devices of WAN140. Edge device221also inspects outgoing data transmissions and/or the status of communication link141, and further selectively stores outgoing data transmissions to storage device260. Edge device221can also retrieve stored data transmissions to storage device260and forward the retrieved data transmission to a destination address142A-N. Edge device221can retrieve data transmissions by, for example requesting the data transmission or a copy of the data transmission from storage device260.

System200and queueing system220allow the advantages of queueing network device120to be more easily implemented on existing network infrastructure. Queueing network device120requires a large amount of data storage in some examples to store data transmissions from local devices110. Conversely, network inspection module170and forwarding module180have relatively small storage sizes and can be stored to smaller hardware memory units that may be present on existing network edge devices. Accordingly, edge device221can be created by configuring an existing network edge device (e.g., a router, gateway, etc.) with the programs of network inspection module170and forwarding module180without requiring upgrading or modification of the hardware elements of the existing network edge device. Storage device260can be any suitable electronic device having a large amount of storage and connected to queueing network device120. Storage device260having sufficient data storage can be separately constructed and connected to edge device221to create queueing system220without requiring hardware modification or reconfiguration of edge device221. For example, storage device260can be a storage server or network attached storage (NAS) device that can be connected to edge device221.

FIG.3is a flow diagram of method300, which is a method of selective data transmission performable by queueing network device120(FIG.1) and queueing system220(FIG.2). Method300includes steps302-322of receiving a data transmission from a local device (step302), receiving a network status (step304), determining whether the queueing network device or system is connected to a WAN (step306), storing the data transmission (step308), receiving a network status (step310), determining whether the queueing network device or system is connected to a WAN (step312), analyzing the data transmission with a rules engine (step314), determining whether to forward the data transmission (step316), storing the data transmission (step317), transmitting the data transmission (step318), receiving a response from the destination address (step320), and forwarding the response to the local device (step322). Method300will be discussed generally with respect to system100and queueing network device120(FIG.1) for explanatory purposes, but method300can be adapted to be used with any suitable system for data transmission storage, forwarding, and/or queueing (e.g., system200and/queueing system220;FIG.2).

In step302, queueing network device120receives a data transmission from a local device110. The data transmission is an outbound data transmission intended for a destination address142A-N accessible via WAN140. The destination address142A-N is only accessible when communication link141is operable. The data transmission can be, for example, a request for a service or data from a device or system corresponding to the destination address142A-N. The data transmission can also be, for example, outgoing data to be backed up or stored by a device or system corresponding to the destination address142A-N.

In step304, queueing network device120receives a network status. The network status describes the status of communication link141. Queueing network device120can use one or more programs of network inspection module170to inspect the status of communication link141. For example, queueing network device120can use one or more programs of network inspection module170to send a test communication to a device or system connected to WAN140and determine the status of communication link141based on whether queueing network device120receives a response from the device or system within a particular time period.

In step306, queueing network device120detects whether queueing network device120is connected to WAN140based on the network status received in step304. Specifically, if communication link141is interrupted, queueing network device120can determine that queueing network device120is not connected to WAN140. Conversely, if communication link141is available, queueing network device120can determine that queueing network device120is connected to WAN140. The combination of steps304and306allows queueing network device120to detect interruptions to the connection between queueing network device120and WAN140and, in some examples, steps304and306can be performed substantially simultaneously or can be performed as a single step of method300.

If queueing network device120is not connected to WAN140, method300proceeds to step308. In step308, queueing network device120stores the data transmission received in step302to storage160. Step308can be performed in response to a determination in step306that WAN140is not connected to queuing network device120. Queueing network device120can be configured to automatically store the received data transmission to storage160upon determining that queueing network device120is not connected to WAN140in step306.

In step310, queueing network device again receives a network status describing whether communication link141is available. Step310is substantially similar to step304, but is performed after the data transmission has been stored to storage160. In step312, queueing network device120detects whether queueing network device120is connected to WAN140based on the network status received in step310. Step312is substantially similar to step306, but is performed using the network status received in step310rather than the network status received in step304.

The combination of step310and step312allows queueing network device120to detect whether the connection between queueing network device120and WAN140has been restored or remains interrupted. If queueing network device120detects that WAN140is connected in step314, the connection between queueing network device120and WAN140(i.e., communication link141) has been restored. If queueing network device120detects that WAN140is not connected in step312, method300returns to step310and continues to periodically detect the status of communication link141. Queueing network device120can be configured to periodically detect the status of communication link141using any suitable interval of time.

If queueing network device120detects that the connection between queueing network device120and WAN140has not been interrupted in steps304,306or that the connection has been restored in steps310,312, method300proceeds to step314. In step314, the outgoing data transmission received in step302is analyzed using a forwarding rules engine. In step316, queueing network device120determines whether to forward the data transmission based on the results of the analysis performed in step314. In combination, steps314and316allow queueing network device120to determine whether to forward the data transmission to the intended destination address of the data transmission by analyzing the data transmission using the forwarding rules engine.

The forwarding rules engine used in step314includes one or more conditional rules that can be used by processor122to determine whether the outbound data transmission received in step302should be forwarded to the destination address at the time at which steps314,316are performed or whether the outbound data transmission should be or remain stored to storage160and be forwarded at a later time. The conditional rules of the forwarding rules engine can be stored to memory124of queueing network device120and, in some examples, can be encoded as a table, array, matrix, database, or other suitable structure. As described previously, the forwarding rules engine can include conditional rules relating to, for example, a network address element of the destination address to which the data transmission is directed (e.g., the domain of the server), a network address of the local device, the memory or file size of the data transmission, the bandwidth available on communication link141, or any data metering or data caps to which communication link141or the destination address are subject, among other options. In some examples, the forwarding rules engine can also include one or more conditional rules for the network statuses received in steps304and310, such that processor122can inspect the contents of the outbound request (e.g., a domain or another element of the request) as well as the operational status and/or another aspect of system100(e.g., the operational status of communication link141) according to the conditional rules of the forwarding rules engine in step314.

If processor122determines that the outbound transmission should not be forwarded, method300proceeds to step317. In step317, the outbound data transmission is stored to storage160if the outbound transmission was not previously stored in step308. For example, if queueing network device120detects that communication link141is operational and WAN14is available in step306, but determines according to analysis performed in step314that the outbound transmission should not be forwarded (e.g., due to bandwidth constraints of communication link141, metering of communication link141, etc.), the data transmission is stored to storage160in step317for forwarding at a later point in time. As a specific example, if the data transmission has a particularly large size (e.g., a size over a particular threshold), the bandwidth of communication link141is limited such that transmission of the data would prevent or hinder transmission of other data, and the data transmission is not time-sensitive such that the operation of system100or another system would not be negatively affected by delayed transmission of the data, the data transmission can be stored to storage160for forwarding at a later point in time.

Method300then proceeds back to step314at a later point in time to determine whether, at the later point in time, the conditions of communication link141, queueing network device120, or any other suitable aspect of system100have changed such that the data transmission should be forwarded. Steps314and316can be performed repeated until processor122has determined that the data transmission should be forwarded. The period of time or interval in which iterations of steps314,316are performed can be selected to be any suitable length. If the data transmission analyzed in steps314,316was previously stored to storage160in step308or in a subsequent iteration of step317, step317can be skipped or omitted and the copy of the data transmission already stored to storage160can be preserved until the transmission is forwarded.

In some examples, a machine-learning algorithm can be used to perform step314and/or step316of method300. The machine-learning algorithm can be trained to, for example, accept parameters of system100and/or an element of a data transmission from a local machine110and output a determination of whether the data transmission should be forwarded immediately or substantially immediately, or whether the data transmission should be stored for later forwarding. The machine-learning algorithm can be trained using, for example, a forwarding rules engine including one or more conditional rules. Additionally and/or alternatively, the machine-learning algorithm can be trained using a labeled training set of data transmissions or of data transmission information (e.g., header information, etc.). Advantageously, using a machine-learning model to determine whether to forward a data transmission provides greater flexibility to a system including a queueing network device according to the present disclosure. More specifically, a trained computer-implemented machine-learning model can be configured to recognize a broader range of data transmissions and conditions as suitable for storing a data transmission for later forwarding or suitable for immediate or substantially immediate forwarding of a data transmission. Further, the pattern-recognition capabilities of a trained computer-implemented machine-learning model can allow recognition of situations where it is useful to store and/or forward data transmissions that are difficult for a human programmer or operator to recognize.

If processor122determines in step316, according to analysis performed using the forwarding rules engine in step314, that the data transmission should be forwarded, method300proceeds to step318. In step318, queueing network device120transmits the data transmission to the destination address142A-N to which the data transmission is directed. Step318can be performed in response to a determination in step318that the data transmission should be forwarded. Queueing network device120can transmit the data transmission to the destination address by, for example, transmitting the data transmission across communication link141to one or more components of WAN140that then transmit the data transmission to the intended destination address142A-N. Where the data is stored to storage160, the data can be transmitted by, for example, transmitting a copy of the data from storage160. The data can subsequently be deleted from storage160.

In step320, queueing network device120receives a response from the destination address in response to the data transmission transmitted in step318. Step320is optional and can be included in method300when the data transmitted in step318is a request to a device corresponding to the destination address142A-N, such that the device produces and sends a reply transmission in response to the request. The device or system at the destination address142A-N to which a request was sent in step318(i.e., where the forwarded data transmission is a request) can create and send a reply following step318. The reply can be transmitted through WAN140and across communication link141to queueing network device120. The reply can include destination address information for one of local devices110such that queueing network device120and/or other components of network130can determine the local device110of local devices110A-N to which the response is directed. In step322, queueing network device120forwards the response received in320to the intended local device110(i.e., the local device110to which the response is directed). Step322is also optional and is included in method300in examples that include step320.

Method300advantageously allows for evaluation of the status of communication link141and storage of outgoing data transmissions when communication link141is interrupted or otherwise inoperable. Method300also advantageously allows for the evaluation and analysis of individual data transmissions that are sent to queueing network device to determine whether the data transmission should be forwarded or be stored to storage160(or remain in storage160). All functions of method300can be performed automatically by the programs of queueing network device120, such that queueing network device120can be installed in an existing or newly-created network system and automatically begin inspecting and selectively forwarding outgoing data transmissions from local devices connected to queueing network device120according to method300. While method300is generally described herein with respect to a single data transmission, method300can be performed any number of times for multiple and/or all data transmissions received by queueing network device120.

FIG.4is a flow diagram of method400, which is an example of a method of data transmission queueing that can be performed by queueing network device120. Method400allows queueing network device120to order outgoing data transmissions into a forwarding order and then transmit those data transmissions according to the forwarding order. Method400includes steps402-422of receiving data transmissions from local device(s) (step402), receiving a network status (step404), detecting whether the queueing network device or system is connected to a WAN (step406), storing the received data transmissions (step408), receiving a network status (step410), detecting whether the queueing network device or system is connected to the WAN (step412), analyzing the received data transmissions with a rules engine (step414), creating a forwarding order (step416), transmitting the data transmissions according to the forwarding order (step418), receiving responses from the destination address(es) (step420), and forwarding the response to the local device(s) (step422).

Step402is substantially similar to step302of method300(FIG.3), except that queueing network devices receives more than one data transmission in step402. Steps404and406are substantially similar to steps304and306, respectively, of method300(FIG.3) and can be performed in the same or substantially the same manner. Step408is substantially similar to step408of method300(FIG.3), but all data transmissions received in step402are stored to storage160. That is, in step408, multiple data transmissions are stored to storage160. Steps410and412are substantially similar to steps310and312, respectively, of method300(FIG.3) and can be performed in the same or substantially the same manner.

Method400proceeds to step414if queueing network device120detects that communication link141is operable or has been restored in step406or step412. In step416, queueing network device creates a forwarding order based on the analysis in step414. The forwarding order describes an order in which to transmit the data transmissions received in step402. The forwarding order can order data transmissions to be transmitted sequentially and/or can order data transmissions to be transmitted in sets or tiers. For example, the forwarding order can order data transmissions such that a first data transmission and a second data transmission are sent at the same time or substantially the same time, a third transmission is sent after the first and second transmissions, a fourth and fifth transmission are sent at the same time or substantially the same time after the third transmission is sent, etc. In combination, steps414and416allow queueing network device120to analyze the data transmissions received in step402with a forwarding rules engine to generate the forwarding order.

In step414, queueing network device120analyzes the data transmissions received in step402with a forwarding rules engine. The forwarding rules engine used in step414includes one or more conditional rules that can be used by processor122to determine an order or priority of an outbound data transmission received in step402that can be used to create a forwarding order in step416. The conditional rules of the forwarding rules engine can be stored to memory124of queueing network device120and, in some examples, can be encoded as a table, array, matrix, database, or other suitable structure. As described previously, the forwarding rules engine can include conditional rules relating to, for example, a network address element of the destination address to which the data transmission is directed (e.g., the domain of the server), the memory or file size of the destination address, the bandwidth available on communication link141, or any data metering or data caps to which communication link141or the destination address are subject, among other options. In some examples, the forwarding rules engine can also include one or more conditional rules for the network statuses received in steps404and406, such that processor122can inspect the contents of the outbound request (e.g., a domain or another element of the request) as well as the operational status and/or another aspect of system100(e.g., the operational status of communication link141) according to the conditional rules of the forwarding rules engine in step414.

In step416, queueing network device120creates forwarding order based on the analysis performed in step414. The forwarding rules engine can be configured to, for example, determine a priority of a data transmission and the forwarding order can be created using the priority information. The forwarding order can be created using the forwarding rules engine, another program of forwarding module180, or any other suitable program of queueing network device120. The forwarding order created in step416can be used to queue outgoing data transfers to reduce congestion across communication link141.

In some examples, a machine-learning algorithm can be used to perform step414and/or step416of method400. The machine-learning algorithm can be trained to, for example, accept parameters of system100and/or an element of a data transmission from a local machine110and output a forwarding order. The machine-learning algorithm can be trained using, for example, a forwarding rules engine including one or more conditional rules. Additionally and/or alternatively, the machine-learning algorithm can be trained using a labeled training set of data transmissions or of data transmission information (e.g., header information, etc.). The use of a computer-implemented machine learning model to perform step414and/or step416confers substantially the same advantages as described previously with respect to the use of a computer-implemented machine learning model to perform step314and/or step316of method300(FIG.3).

In step418, queueing network device120transmits the data transmissions according to the forwarding order. The data transmissions are transmitted in step418to the destination address142A-N or destination addresses142A-N to which the data transmissions are directed. Queueing network device120can transmit the data transmissions to the destination address(es) by, for example, transmitting the data transmissions across communication link141to one or more components of WAN140that then transmit the data transmissions to the intended destination address(es)142A-N. The data transmissions are queued at queueing network device120and are transferred according to the order specified in the forwarding order. As described previously, the forwarding order can specify a sequential order of each outgoing data transmission and/or the forwarding order can specify groups or tiers of priority for the outgoing data transmissions. In examples where the data transmissions are stored to storage160, the data can be transmitted by, for example, transmitting copies of the data transmissions from storage160. The data transmissions can subsequently be deleted from storage160.

In step420, queueing network device120receives a response from the destination address(es) in response to the data transmissions transmitted in step418. Step420is optional and can be included in method400when one or more of the data transmissions forwarded in step418are requests to a device corresponding to the destination address142A-N, such that the device produces and sends a reply transmission in response to the request. The device or system at each destination address142A-N to which a request was sent in step418can create and send a reply following step418. The reply or replies can be transmitted through WAN140and across communication link141to queueing network device120. The reply or replies can each include destination address information for one of local devices110such that queueing network device120and/or other components of network130can determine the local device110of local devices110A-N to which each response is directed.

In step422, queueing network device120forwards the response received in step420to local devices110. More specifically, queueing network device120forwards each response received in step420to the local device110to which the response is directed. Step422is also optional and is included in method400in examples that include step420.

Method400advantageously allows queueing network device120to create a forwarding order that can be used to prioritize data transfers across communication link141when bandwidth across communication link141is limited or communication link141is expected to be operational for a limited period of time (e.g., if communication link141is a satellite or other wireless connection that is expected to be operational for a limited duration). When bandwidth across communication link141is limited, unordered or unqueued transfers can cause data congestion across communication link141, potentially decreasing the performance of applications of local devices110performing important or critical functions. The forwarding orders created using method400can be used to reduce congestion across communication link141by queueing data transmissions according to their relative priority, improving the performance of important or critical applications of local devices110by deprioritizing access of communication link141by applications having less importance to the function of system100or another system, such as systems relevant to operating or conducting a business.

Queueing network device120can be configured to automatically recognize when bandwidth across communication link141is limited or communication link141is expected to be operational for a limited period of time and perform method400to select data transmissions to transmit according to the calculated priority of those data transmissions. All functions of method400can be performed automatically by the programs of queueing network device120, such that queueing network device120can be installed in an existing or newly-created network system and automatically begin inspecting outgoing data transmissions and ordering those data transmissions according to a forwarding order according to method400.

FIG.5is a flow diagram of method500, which is an example of a method of selective data transmission forwarding and data transmission queueing performable by queueing network device120. Method500incorporates aspects of method300(FIG.3) and method400(FIG.4), and includes steps502-524of receiving data transmissions from local device(s) (step502), receiving a network status (step504), detecting whether the queueing network device or system is connected to a WAN (step506), storing the received data transmissions (step508), receiving a network status (step510), detecting whether the queueing network device or system is connected to the WAN (step512), analyzing the received data transmissions with a rules engine (step514), determining whether to forward the data transmissions (step516), storing unforwarded data transmissions (step517), creating a forwarding order (step518), transmitting the data transmissions according to the forwarding order (step520), receiving responses from the destination address(es) (step522), and forwarding the response to the local device(s) (step524).

Steps502-512are substantially similar to steps402-412of method400(FIG.4) and can be performed in substantially the same manner as described previously with respect to method400. Method500proceeds to step514when queueing network device120detects that communication link141is operable or restored such that queueing network device120is connected to WAN140in steps506or512. In step514, the outgoing data transmissions received in step502are analyzed using a forwarding rules engine. In step516, queueing network device120determines whether to forward any of the received data transmissions based on the results of the analysis performed in step514. In combination, steps514and516allow queueing network device120to determine whether to forward the data transmission to the intended destination address of the data transmission by analyzing the data transmission using the forwarding rules engine.

The forwarding rules engine used in step514includes one or more conditional rules that can be used by processor122to determine whether any of the outbound data transmissions received in step502should be forwarded to the destination address at the time at which steps514,516are performed or whether the outbound data transmission should be or remain stored to storage160and be forwarded at a later time. The forwarding rules engine and the conditional rules can be substantially the same as the forwarding rules engine and conditional rules used to perform method300(FIG.3), as described previously. Further, step514and/or step516can be performed using a trained computer-implemented machine-learning model, as described previously with respect to step314and step316of method300.

In some examples, processor122can analyze the data transmissions received in step402and group data transmissions according to the results of the analysis performed in steps514,516. As processor122performs method500, and more specifically as processor122performs step516of method500, processor122can segregate data transmissions into groups according to whether the data transmissions should be forwarded. Processor122can perform steps518-524for those data transmissions that should be forwarded according to step516and can perform step517and subsequent iterations of steps514,516for data transmissions that should not be forwarded according to the determination in step516. Processor122can examine each data transmission individually to determine whether the data transmission should be forwarded and sort the data transmissions accordingly. Processor122can perform different steps of method500on each group of data transmissions. As processor122continues to perform iterations of steps514,516on data transmissions that are not initially forwarded, processor122can continue to determine that certain data transmissions should be forwarded and perform additional iterations of steps518-524using those data transmissions. Processor122can perform iterations of steps514,516until all data transmissions received in step502have been selected for forwarding. Additionally and/or alternatively, processor122can be configured to perform only a certain number of iterations of steps514,516on a data transmission and, subsequently, stop performing method500.

In other examples, forwarding module180can be configured so that processor122does not create groups of data transmissions according to determinations made in step516, and instead proceeds through the same steps of method500for all data transmissions received in step402. In some of these examples, processor122can determine whether to forward all data transmissions received in step402by analyzing each data transmission individually, such that if queueing network device120determines that one transmission should not be forwarded in step516, all data transmissions received in step402are not forwarded. In yet further of these examples, processor122determines whether to forward all data transmissions received in step402based on an aggregate analysis of all data transmissions received in step402.

If processor122determines that any outbound transmission should not be forwarded, method500proceeds to step517for those data transmissions. The data transmissions stored can be all, fewer than all, or none of the data transmissions analyzed in steps514,516of method500. In step517, outbound data transmissions that are not suitable for immediate or substantially immediate forwarding are stored to storage160. More specifically, if queueing network device120detects that communication link141is operational and WAN140is available in step506or in step512, but determines according to analysis performed in step514that one or more outbound transmissions should not be forwarded, the data transmissions are stored to storage160in step517for forwarding at a later point in time. Step517is substantially similar to step317of method300(FIG.3) and the forwarding rules engine can select certain transmissions for storage in step517rather than forwarding in step520, discussed subsequently, according to the same considerations as described previously with respect to step317of method300.

Following step517, method500then proceeds back to step514at a later point in time to determine whether, at the later point in time, the conditions of communication link141, queueing network device120, or any other suitable aspect of system100have changed such that the data transmission should be forwarded. Steps514and516can be performed repeatedly until processor122has determined that the data transmission should be forwarded. The period of time or interval in which iterations of steps514,516are performed can be selected to be any suitable length. If the data transmission analyzed in steps514,516was previously stored to storage160in step508or in a subsequent iteration of step517, step517can be skipped or omitted and the copy of the data transmission already stored to storage160can be preserved until the transmission is forwarded.

For groups of data transmissions that processor122determines are suitable for forwarding according to the analysis performed in steps514,516, method500proceeds to step518. In step518, processor122creates a forwarding order. The forwarding order can be created as described previously with respect to step416of method400(FIG.4). The forwarding order can be created using conditional rules of a forwarding rules engine, as described previously with respect to step416of method400. Further, step418can be performed using a trained computer-implemented machine-learning model, as described previously with respect to step416method400.

The forwarding order describes an order in which to transmit groups of data transmissions which, following an iteration of steps514,516, queueing network device120determines should be forwarded. Advantageously, the forwarding order created in step516can be used to queue outgoing data transmissions to reduce congestion across communication link141. As described previously, the forwarding order can specify a sequential order for each outgoing data transmission and/or the forwarding order can specify groups or tiers of priority for the outgoing transmissions.

In step520, the data transmissions are transmitted according to the forwarding order created in step518. Step520can be performed in the same manner as step418of method400(FIG.4) and confers substantially the same advantages as step418of method400.

In step522, queueing network device120receives responses from devices corresponding to destination addresses to which data transmission were sent in step520. In step524, queueing network device120forwards the responses received in step522to local devices110to which the responses are directed. Steps522and524are optional and can be performed in the same situations as described previously with respect to steps320,322of method300(FIG.3) and steps420,422of method400(FIG.4).

Method500advantageously incorporates steps of both method300and method400, and accordingly provides the advantages of both method300and method400. Like method300, method500allows for evaluation of the status of communication link141and storage of outgoing data transmissions when communication link141is interrupted or otherwise inoperable. Method500also advantageously allows for the evaluation and analysis of individual data transmissions that are sent to queueing network device to determine whether the data transmission should be forwarded or be stored to storage160(or remain in storage160). Like method400, method500advantageously allows queueing network device120to create a forwarding order that can be used to prioritize data transfers across communication link141when bandwidth across communication link141is limited or communication link141is expected to be operational for a limited period of time (e.g., if communication link141is a satellite or other wireless connection that is expected to be operational for a limited duration). As described previously, when bandwidth across communication link141is limited, unordered or unqueued transfers can cause data congestion across communication link141, potentially decreasing the performance of applications of local devices110performing important or critical functions. The forwarding orders created using method500can be used to reduce congestion across communication link141by queueing data transmissions according to their relative priority, improving the performance of important or critical applications of local devices110by deprioritizing access of communication link141by applications having less importance to the function of system100or another system, such as systems relevant to operating or conducting a business. Accordingly, method500can be performed by queueing network device120to confer the advantages of both transmission evaluation and outbound transmission queueing conferred by methods300and400.

Notably, method500advantageously allows multiple levels of priority to be used in the determination of data transmission forwarding order. Method500allows higher priority data transmissions to be forwarded before lower priority data transmissions by use of elements of method300, and also allows data transmissions within each relative priority level to be further ordered according to relative priority by use of elements of method400.

Methods300,400, and500confer advantages to examples where local devices110are reliant on a wireless or otherwise easily disruptable communication link141. Applications and software are often reliant on a persistent or continuous network connection and can encounter errors when attempting to transmit data to WAN140when communication link141is interrupted. For example, a camera system in a remotely-located wilderness area can use methods300,400,500to selectively upload and/or queue outbound data transmissions to WAN-connected devices for backup and/or analysis. As another example, a camera system in a factory environment using a wireless or disruptable connection can use methods300,400,500to selectively upload and/or queue outbound data transmissions. As yet a further example, a remotely-deployed AR or VR apparatus or system can use methods300,400,500to selectively upload and/or queue outbound data transmissions. Other examples of systems that benefit from the advantages provided by methods300,400,500are possible and contemplated herein, and the specific examples provided herein are illustrative and non-limiting.

FIG.6is a flow diagram of method600, which is a method of training a machine-learning algorithm according to the present disclosure. Machine-learning algorithms trained according to method500are capable of accepting as inputs one or more aspects or elements of a request (e.g., a packet header element, etc.) and/or one or more aspects of systems100,200(e.g., the operational status of communication link141). Method600can be used to train a machine-learning algorithm to output a determination as to whether a data transmission should be forwarded. Method600can also be used to train a machine-learning algorithm to output a forwarding order and/or to output prioritization data that can be used to produce a forwarding order. Method600includes steps of602-606of generating labeled training data (step602), training a computer-implemented machine-learning model with the labeled data (step604), and testing the trained computer-implemented machine-learning model with test data (step606).

In step602, labeled training data is generated. The labeled data can be, for example, labeled requests from local devices110, labeled data that is extractable from requests from local devices110, and/or labeled data describing the operational status of elements of systems100,200(e.g., the operational status of communication link141), among other options. The training data can be created, for example, by collecting a set of outbound data transmissions from local devices110and labeling each request according to whether the request should be forwarded and/or under what conditions of system100and/or system200each data transmission should be forwarded. The training data can also be, for example, one or more forwarding orders and/or prioritization data. For example, a set of training transmissions can be labeled with a value that represents that priority of the transmission and used to train a computer-implemented machine-learning model in the subsequent steps of method500.

In step604, the labeled data is used to train the computer-implemented machine-learning model. As used herein, “training” a computer-implemented machine-learning model refers to any process by which parameters, hyper parameters, weights, and/or any other value related to model accuracy are adjusted to improve the fit of the computer-implemented machine-learning model to the training data.

In step606, the trained computer-implemented machine-learning model is tested with test data. The test data used in step606is unlabeled data of the same variety as the training data that is used to qualify and/or quantify performance of the trained computer-implemented machine-learning model. More specifically, a human or machine operator can evaluate the performance of the machine-learning model by evaluating the fit of the model to the test data. As depicted inFIG.5, steps604and606can be performed iteratively to improve the performance of the machine-learning model. More specifically, if the fit of the model to the unlabeled data determined in step606is undesirable, step606can be repeated to further adjust the parameters, hyper parameters, weights, etc. of the model to improve the fit of the model to the test data. Step606can then be repeated with a new set of unlabeled test data to determine how the adjusted model fits the new set of unlabeled test data. If the fit continues to be undesirable, further iterations of steps604and606can be performed until the fit of the model becomes desirable.

Method600advantageously allows for the use of computer-implemented machine-learning models to perform various functions of network inspection module170, forwarding module180, and/or a forwarding rules engine. As described previously, computer-implemented machine-learning models can impart great flexibility to the queueing network devices described herein and can allow a greater variety of outbound transmissions to be recognized by the storing and forwarding logic used by the queueing network devices. For example, computer-implemented machine-learning models can be used to increase the range of data transmissions to which a limited set of conditional rules can be applied in, for example, steps314,316of method300(FIG.3), steps414,416of method400, and/or steps514,516,518of method500.