Nothing Special   »   [go: up one dir, main page]

WO2017112364A1 - Managing communication congestion for internet of things devices - Google Patents

Managing communication congestion for internet of things devices Download PDF

Info

Publication number
WO2017112364A1
WO2017112364A1 PCT/US2016/063907 US2016063907W WO2017112364A1 WO 2017112364 A1 WO2017112364 A1 WO 2017112364A1 US 2016063907 W US2016063907 W US 2016063907W WO 2017112364 A1 WO2017112364 A1 WO 2017112364A1
Authority
WO
WIPO (PCT)
Prior art keywords
messages
lot
message
cloud
data
Prior art date
Application number
PCT/US2016/063907
Other languages
French (fr)
Inventor
Michael Nolan
Keith Nolan
Pat CHEEVERS
Mark Kelly
John Brady
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of WO2017112364A1 publication Critical patent/WO2017112364A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/062Generation of reports related to network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/065Generation of reports related to network devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion

Definitions

  • the present techniques relate generally to Internet of Things (loT) devices. More specifically the present techniques relate to devices that can manage communication congestion.
  • LoT Internet of Things
  • FIG. 1 is a drawing of a cloud computing network, or cloud, in
  • Fig. 2 is a block diagram of components that may be present in an loT device that can respond to backpressure and control data transfer.
  • Fig. 3 is a block diagram of an loT gateway that may be used to collect and send messages from a number of loT devices.
  • Fig. 4 is a block diagram of an example of an loT deployment with backpressure control residing completed in the cloud.
  • Fig. 5 is a data processing pipeline in the cloud 100 with backpressure detection extended to an loT gateway.
  • Fig. 6 is a schematic diagram of a backpressure detection system using tracer messages to measure system congestion.
  • Fig. 7 is a process flow diagram of method for an enhanced message dispatch from an edge device.
  • Fig. 8 is a process flow diagram of a method for replaying messages that have not been successfully sent to a destination.
  • Fig. 9 is a schematic diagram of an loT system in which the cloud-based data processing pipeline is able to orchestrate how the cached messages are replayed.
  • Fig. 10 is a process flow diagram of a method for orchestrating messages.
  • Fig. 1 1 is a schematic drawing of a FIFO buffer, showing the addition of messages to the queue and the removal of messages from the queue.
  • Fig. 12 is a process flow of a method for sending data from an loT gateway using a FIFO buffer.
  • Fig. 13 is a schematic drawing of a LIFO buffer, showing the addition of messages to the queue and the removal of messages from the queue.
  • Fig. 14 is a process flow of a method for sending data from an loT gateway using a LIFO buffer.
  • Fig. 15 is a schematic drawing of a sampled buffer, showing the addition of messages to the queue and the removal of messages from the queue.
  • Fig. 16 is a process flow of a method for sending data from an loT gateway using a sampled buffer.
  • Fig. 17 is a block diagram of a non-transitory, computer readable medium 1700 that includes instructions to direct a processor to manage communications between loT gateways and devices and systems in the cloud.
  • loT The internet of things
  • loT networks may include commercial and home automation devices, such as water distribution systems, electric power distribution systems, pipeline control systems, plant control systems, light switches, thermostats, locks, cameras, alarms, motion sensors, and the like.
  • loT devices may be accessible through remote computers, servers, and other systems, for example, to control systems or access data.
  • loT devices may include loT gateways, used to couple other loT devices to cloud applications.
  • loT devices Global deployments of loT devices generally rely on communications to back end cloud based services. Given the scale of the underlying wireless networks involved in the global deployment of billions of loT devices, outages and loss of network connectivity may often occur. The temporary network connectivity issues may result in the loss of valuable sensor data and may significantly increase the network load and backend server processing requirements when cached messages are dispatched or replayed.
  • the techniques described herein provide backend data processing pipelines with the ability to protect themselves against a data deluge following a lengthy network connectivity outage affecting part of the deployed network.
  • data processing pipelines use spare downstream message capacity to globally or individually control the rate and mode of replay for loT gateways to significantly reduce the potential for large spikes in data processing load and pipeline congestion.
  • a system may calculate a congestion level and send alerts to edge devices.
  • an edge device may be an loT gateway in communication with a number of loT devices and with servers, or other devices, in a computing cloud.
  • the edge device may be an loT device that is directly in communication with the computing cloud.
  • a computing cloud, or cloud includes mobile phone systems, internet service providers, routers, networks, servers, and other units that transfer or consume data.
  • the alerts can also be consumed and acted upon by any interested party, for example a pipeline statistics consumer. Any number of communication issues may interfere with the transfer of messages to the cloud, including failures in cloud based equipment, such as routers and server, among others.
  • Examples described herein may include a data processing pipeline with backpressure detection to identify communication issues in the cloud through congestion. Once detected, the congestion may be quantified based on service availability, throughput, and available resources. Further, a cloud to edge alert system may be used to communicate backpressure states in the cloud to an edge device, for example, to trigger a behavior change in the edge device. The alert system may send backpressure alert messages to the edge device, or create backpressure alert messages to be accessed by the edge device, or both.
  • Behavior changes in the edge device may include different reporting mechanisms during times of congestion, different methods for sending data backlogs once the congestion is relieved, or both.
  • loT gateway based message dispatch and replay mechanisms may be used to implement automatic self-adaption in relation to dynamic message caching and sensor polling decisions.
  • sensor measurements can be cached using local resources on the edge device, e.g., loT gateway or loT device, using a buffer. This may occur automatically in response to a temporary overload of the available cloud resources. Further, the rate that messages are sent may be automatically adjusted, e.g., reduced or increased, depending on changes in the level of congestion. The behaviors may be implemented in response to messages from the network itself or from peer systems. For example, the system may dynamically vary the rate at which sensors are polled to measure new data and the rate that data is dispatched to the data processing pipeline in the cloud. Both the congestion rate in the cloud and the remaining local resources, e.g., the ability to cache data at the edge device, may be considered in these determinations.
  • the system may automatically process any backlog of sensor measurements which have been cached locally during the backpressure event.
  • the measurement timestamps are preserved and the system automatically back-fills any time periods where a capacity issue prevented the realtime dispatch of measurements from the device.
  • Data cached on the edge devices does not have to be dispatched in the same time order as when they were obtained.
  • the system provides a configurable method to dispatch latest data measured first, latest data measured last, or dispatch random samples of stored data. This provides flexibility to prioritize edge data, e.g., time-sensitive cached data, for improved summary calculations by backend systems.
  • Fig. 1 is a drawing of a cloud computing network, or cloud 100, in communication with a number of Internet of Things (loT) devices 102, at least some of which are communicating with servers 104.
  • the cloud 100 may represent the Internet, or may be a wide area network, such as a proprietary network for a company.
  • the loT devices 102 may include any number of different types of devices, grouped in various combinations.
  • a traffic control group 106 may include loT devices 102 along streets in a city. These loT devices may include stoplights, traffic flow monitors, cameras, and the like.
  • the traffic control group 1 06 may be in communication with the cloud 100 through a subnetwork 108, such as a local area network, wireless local area network, and the like.
  • the loT devices 102 may use another loT device 1 02 as an loT gateway 1 18 to communicate with the cloud 1 00.
  • loT devices 1 02 may include remote weather stations 109, local information terminals 1 1 0, alarm systems 1 12, automated teller machines 1 14, and alarm panels 1 16, among many others. Each of these loT devices 102 may be in communication with other loT devices 102, with servers 1 04, or both.
  • a large number of loT devices 1 02 may be communicating through the cloud 100.
  • Each of these loT devices 102 may generate a time sequenced data stream including, for example, a sensor data stream.
  • the traffic control group 106 of loT devices 102 may send traffic counts, traffic speed, images, precipitation amounts, temperature measurements, and the like. Given the number of loT devices 102 that are sending data, the network loading may be substantial. If any problems develop in the data pipeline from the loT devices 102, in the cloud 100, or at the servers 104, data may be out of sequence or lost.
  • the network congestion may be monitored to change the functionality of the loT devices 102, e.g., controlling the rate and sequence of data collection and transfer, herein collectively termed data transfer.
  • This may be performed by backpressure monitoring in the cloud 100, at an loT gateway 1 18, or at an loT device 102.
  • the backpressure monitoring in the cloud 100 may be used to generate alerts that are sent to an loT gateway 1 18 or loT device 102 to control data transfer.
  • Fig. 2 is a block diagram of components that may be present in an loT device 200 that can respond to backpressure and control data transfer. Like numbered items are as described with respect to Fig. 1 .
  • the loT device 200 may include any combinations of the components.
  • the components may be implemented as ICs, portions thereof, discrete electronic devices, or other modules, logic, hardware, software, firmware, or a combination thereof adapted in the loT device 200, or as components otherwise incorporated within a chassis of a larger system.
  • the block diagram of FIG. 2 is intended to show a high level view of components of the loT device 200. However, some of the components shown may be omitted, additional components may be present, and different arrangement of the
  • the loT device 200 may be a traffic monitoring device, a remote weather station, a programmable logic controller (PLC) or remote terminal unit (RTU) in a SCADA (supervisory control and data acquisition) network, an alarm system device, a smart television, a cellular telephone, or any number of other loT devices 102 as discussed with respect to Fig. 1 .
  • PLC programmable logic controller
  • RTU remote terminal unit
  • SCADA supervisory control and data acquisition
  • the loT device 200 may include a processor 202, which may be a microprocessor, a multi-core processor, a multithreaded processor, an ultra-low voltage processor, an embedded processor, or other known processing element.
  • the processor 202 may be a part of a system on a chip (SoC) in which the processor 202 and other components are formed into a single integrated circuit, or a single package.
  • SoC system on a chip
  • the processor 202 may include an Intel®
  • Architecture CoreTM based processor such as a QuarkTM, an AtomTM, an i3, an i5, an i7, or MCU-class processors, or another such processor available from Intel® Corporation, Santa Clara, CA.
  • processors may be used, such as available from Advanced Micro Devices, Inc. (AMD) of Sunnyvale, CA, a MlPS-based design from MIPS Technologies, Inc. of Sunnyvale, CA, an ARM-based design licensed from ARM Holdings, Ltd. or customer thereof, or their licensees or adopters.
  • These processors may include units such as an A5/A6 processor from Apple® Inc., a QualcommTM processor from Qualcomm® Technologies, Inc., or an OMAPTM processor from Texas Instruments, Inc.
  • the processor 202 may communicate with a system memory 204.
  • the memory can be random access memory (RAM) in accordance with a Joint Electron Devices Engineering Council (JEDEC) low power double data rate (LPDDR)-based design such as the current LPDDR2 standard according to JEDEC JESD 209-2E (published April 2009), or a next generation LPDDR standard to be referred to as LPDDR3 or LPDDR4 that will offer extensions to LPDDR2 to increase bandwidth.
  • the individual memory devices may be of any number of different package types such as single die package (SDP), dual die package (DDP) or quad die package (Q17P).
  • CMOS complementary metal-oxide-semiconductor
  • CMOS complementary metal-oxide-semiconductor
  • BGA ball grid array
  • a mass storage 206 may also couple to the processor 202.
  • the mass storage may be implemented via a solid state disk drive (SSDD).
  • SSDD solid state disk drive
  • HDD micro hard disk drive
  • any number of new technologies may be used for the mass storage 206 in addition to, or instead of, the technologies described, such resistance change memories, phase change memories, holographic memories, or chemical memories, among others.
  • the loT device 200 may incorporate the 3D XPOINT memories from Intel® and Micron®.
  • the components may communicate over a bus 208.
  • the bus 208 may include any number of technologies, including industry standard architecture (ISA), extended ISA (EISA), peripheral component interconnect (PCI), peripheral component interconnect extended (PCIx), PCI express (PCIe), or any number of other technologies.
  • ISA industry standard architecture
  • EISA extended ISA
  • PCI peripheral component interconnect
  • PCIx peripheral component interconnect extended
  • PCIe PCI express
  • the bus 208 may be a proprietary bus, for example, used in a SoC based system.
  • Other bus systems may be used, such as the l 2 C interface, the SPI interfaces, and point to point interfaces, among others.
  • the bus 208 may couple the processor 202 to an interface 21 0 that is used to connect external devices.
  • the external devices may include sensors 212, such as traffic sensors, radar speed detectors, cameras, flow sensors, temperature sensors, motion sensors, wind speed sensors, pressure sensors, barometric pressure sensors, and the like.
  • the interface 210 may be used to connect the loT device 200 to actuators 214, such as traffic lights, strobe lights, valve actuators, lock solenoids, audible sound generators, visual warning devices, and the like.
  • various input/output (I/O) devices may be present within, or connected to, the loT device 200.
  • a display may be included to show information, such as sensor readings or actuator position.
  • An input device such as a touch screen or keypad may be included to accept input.
  • the loT device 200 can communicate with a cloud 1 00 in a variety of manners, including wirelessly.
  • various wireless modules each of which can correspond to a radio configured for a particular wireless communication protocol, may be present.
  • a WLAN unit 21 6 may be used to implement Wi-FiTM communications in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.1 1 standard.
  • IEEE Institute of Electrical and Electronics Engineers
  • wireless wide area communications e.g., according to a cellular or other wireless wide area protocol, can occur via a WWAN unit 218.
  • the loT device 200 is not limited to these types of radio transceivers, but may include any number of other radio
  • the loT device 200 may communicate over a wireless personal area network (WPAN) according to the IEEE 802.15.4 standard, among others.
  • WPAN wireless personal area network
  • the loT device 200 may include a network interface controller 220 to communicate with the cloud 1 00 through an Ethernet interface. This may include communicating through a small wired or wireless network shared by number of loT devices 200 that communicate with the cloud 1 00 through an loT gateway 1 1 8, as described with respect to Fig. 1 .
  • the loT device 200 may be part of an ad-hoc or mesh network in which a number of devices pass communications directly between each other, for example, following the optimized link state routing (OLSR) Protocol, or the better approach to mobile ad-hoc networking (B.A.T.M.A.N.), among others.
  • the mesh network may communicate with the cloud, for example, through an loT gateway 1 18.
  • the loT device 200 may be powered by a local power source, such as a battery 222.
  • the local power source may include any number of other units in addition to, or instead of the battery 222, such as solar cells or wind generators to charge the battery 222, among others.
  • the mass storage 206 may include a number of modules to implement the data transfer functions described herein. These modules may include a data transfer controller 224 that controls the data transfer from the loT device 200 to a coordinator or server in the cloud 1 00.
  • the data transfer controller 224 may store data that cannot be sent due to network congestion. Further, the data transfer controller 224 may work with a system controller (not shown) to adjust the rate at which data is collected from the sensors 21 2, for example, depending on available storage space.
  • a backpressure monitor 226 may determine backpressure in the cloud, for example, as determined using the tracer techniques described with respect to Fig. 6.
  • the backpressure monitor 226 may be configured to receive backpressure alerts, e.g., messages, from backpressure monitors in an loT gateway, in the cloud 100, or both.
  • the backpressure monitor 226 may instruct the data transfer controller 224 to adjust the rate at which data, e.g., messages with a sensor reading and a timestamp, are sent out to the cloud 1 00.
  • a data store 228 may be used as a local buffer to hold messages that cannot be sent immediately due to network congestion in the cloud 100.
  • the data store 228 may be used by the data transfer controller 230.
  • messages may be constructed and stored directly in the data store 228, then sent from there under the control of the data transfer controller 224.
  • a data backlog transfer controller 230 may transfer messages that have built up in the data store 228 during a network capacity issue. For example, instead of trying to send backlogged messages immediately upon restoration of
  • the data backlog transfer controller 230 may incrementally send the messages using a number of algorithms. These may include a last in-first out (LIFO) algorithm, a first in-first out (FIFO) algorithm, or a random sampling algorithm.
  • LIFO last in-first out
  • FIFO first in-first out
  • random sampling algorithm random sampling algorithm
  • Fig. 3 is a block diagram of an loT gateway 300 that may be used to collect and send messages from a number of loT devices. Like numbered items are as described with respect to Fig. 2. It can be understood that the loT gateway 300 is not limited to the units shown, but may include any number of additional systems, including, for examples, sensors and actuators, WWAN systems, and the like.
  • the loT gateway 300 may function as an enhanced dispatch system.
  • the loT gateway 300 may use the techniques described herein to monitor cloud or network capacity issues. Further, the control algorithms that control caching decisions and polling decisions may be made in the loT gateway 300.
  • the loT gateway 300 may include any combinations of the components.
  • the components may be implemented as ICs, portions thereof, discrete electronic devices, or other modules, logic, hardware, software, firmware, or a combination thereof adapted in the loT gateway 300, or as components otherwise incorporated within a chassis of a larger system.
  • the block diagram of FIG. 3 is intended to show a high level view of components of the loT gateway 300. However, some of the components shown may be omitted, additional components may be present, and different arrangement of the components shown may occur in other implementations. Further, any of the units used may be the same or different from the units used in the loT device 200 of Fig. 2.
  • various input/output (I/O) devices may be present within, or connected to, the loT gateway 300.
  • a display may be included to show information, such as the status of loT devices 200 in communication with the gateway.
  • An input device such as a touch screen or keypad may be included to accept input.
  • the loT gateway 300 can communicate with a number of loT devices 200 in a variety of manners, including wirelessly.
  • a wireless 302 module is used to communicate with the loT devices 200.
  • the wireless 302 module may include a WLAN radio, or a Bluetooth radio, among others.
  • the loT gateway 300 may communicate with the loT devices 200 over a wireless personal area network (WPAN) according to the IEEE 802.15.4 standard, among others.
  • WPAN wireless personal area network
  • the loT gateway 300 may include a network interface controller 304 to communicate with the cloud 1 00 through an Ethernet interface.
  • the loT gateway 300 may be part of an ad-hoc or mesh network in which a number of devices pass communications directly between each other, for example, following the optimized link state routing (OLSR) Protocol, or the better approach to mobile ad-hoc networking (B.A.T.M.A.N.), among others.
  • the mesh network could then
  • the loT gateway 300 may be powered by a local power source, such as a battery 306.
  • the local power source may include any number of other units in addition to, or instead of the battery 306, such as line connected power supply or charger 308, solar cells, or wind generators to charge the battery 306, among others.
  • the mass storage 206 may include a number of modules to implement the data transfer functions described herein. These modules may include a data transfer controller 31 0 that controls the data transfer to a coordinator or server in the cloud 100.
  • the data transfer controller 310 may store data from the sensors 21 2 and the loT devices 200 that cannot be sent due to network congestion. Further, the data transfer controller 31 0 may instruct the loT devices 200 to adjust the rate at which they send data to the loT gateway 300 or the rate at which data is collected from the sensors 212, for example, depending on available storage space in the loT gateway 300 versus the available storage space in the loT devices 200.
  • a backpressure monitor such as a tracer controller 312 may determine backpressure in the cloud, for example, as determined using the tracer techniques described with respect to Fig. 6.
  • the tracer controller 312 may be configured to receive backpressure alerts, e.g., messages, from backpressure monitors in the cloud 100.
  • the tracer controller 312 may instruct the data transfer controller 310 to adjust the rate at which data, e.g., messages with a sensor reading and a timestamp, is sent out to the cloud 100.
  • a data store 314, or message cache may be used as a local buffer to hold messages from the loT devices 200 or sensor readings that cannot be sent immediately due to network congestion in the cloud 100.
  • the data store 314 may be used by the data transfer controller 31 0.
  • the data store 314 may be implemented using a lightweight database approach, e.g., SQLite, where each newly cached message is associated with an index and timestamp. The index increments when a message is pushed onto the cache.
  • An example of a timestamp is UNIX epoch time.
  • the timestamp may be a 10-digit UNIX epoch time
  • a data backlog transfer controller 31 6 may transfer messages that have built up in the data store 314 during a network capacity issue. For example, instead of trying to send backlogged messages immediately upon restoration of
  • the data backlog transfer controller 316 may incrementally send the messages using a number of algorithms. These may include a last in-first out (LIFO) algorithm, a first in-first out (FIFO) algorithm, or a random sampling algorithm.
  • LIFO last in-first out
  • FIFO first in-first out
  • random sampling algorithm random sampling algorithm
  • the data backlog transfer controller 316 can be augmented to prioritize messages with higher entropy. Entropy may include the most recent observations being deemed more valuable than older ones.
  • the loT gateway 300 may have fewer functional units than shown in Fig. 3, for example, if part of the functionality is implemented virtually.
  • the loT gateway 300 may be a general device, for example, that has an amount of memory, such as 200 Mb, set aside for the operation of a virtual machine (VM).
  • the amount of RAM set aside for the virtual machine may be scaled based on the functions given to the VM.
  • This may allow the use of more general computing devices for the loT gateway 300, and the loT devices 200, since the design of the virtual machine may not depend on the underlying hardware, and only the hardware interface for the VM may be unique to an loT gateway 300. Accordingly, the VM may be implemented across a number of platforms without extensive modifications.
  • the virtual machine may include functional units similar to units 310-316 used to implement the backpressure system. This may include a data store for holding data from other loT devices 200 and sensor 214, a data transfer controller for interacting with units in the cloud, including protocol conversion and data transfer functions among others. A unit in the VM similar to the tracer controller may be used to determine the back pressure in the cloud. A backlog transfer controller in the VM can implement the functions described herein for sending data that has been backlogged, for example, due to backpressure in the cloud.
  • the virtual machine may also be used for implementing virtual sensors. These sensors may use data from real sensors to implement sensors that provide calculated values. For example, a virtual dew point sensor may use measurements from a temperature sensor and a pressure sensor to calculate a measurement for the dew point. Other virtual sensors that may be implemented include testing and validation of other sensors, among others.
  • the backpressure measurement system itself may be implemented as a virtual sensor, for example, in a virtual machine in the loT gateway 300, an loT device 200, or in another unit, for example, in the cloud.
  • the backpressure measurement may be treated as a sensor reading that is read from the virtual backpressure sensor.
  • the backpressure measurement may then be used to control the data transfer, as described herein. Accordingly, the collection and use of the backpressure measurement may be integrated into the system without implementing any messaging system, additional communications system, or protocols.
  • Fig. 4 is a block diagram of an example of an loT deployment with backpressure control residing completed in the cloud 100. Like numbered items are as described with respect to Figs. 1 and 3.
  • the cloud 100 includes a router 402, a message bus 404, a pipeline processing application 406, and a storage system 408.
  • the pipeline processing application 406 and the storage system 408 may be part of a server 104.
  • the numbers below are provided for a specific example to clarify the techniques. However, this is merely one example of many possible configurations. In this example, it may be assumed that there are 20,000 loT gateways 300 distributed across a city.
  • Each of the loT gateways 300 has 10 sensors attached, e.g., directly to a sensor interface or as part of other loT devices.
  • the loT gateways 300 may send one data observation from each of their 10 sensors on a fixed or event driven time interval.
  • the average message size sent from each loT gateway 300 in this configuration may be 3.5Kb.
  • Each loT gateway 300 has an 8GB SD card, of which about 6GB is available once the operating system and applications are installed.
  • the data router 402 in the cloud 100 has two nodes, each with about 40GB of local storage which is used as a message buffer.
  • the message bus 404 in the cloud has two nodes with about 40GB of local storage which is used as a message buffer.
  • the pipeline processing application 406 has two nodes, with no
  • the pipeline application e.g., data processing application, running on them consumes messages from the message bus 404, processes the messages and stores the data in the storage system 408. If the storage system 408 is down, backpressure messages 410 may be used to stop messages from the message bus 404, wherein the messages may be buffered in the message bus 404. If the message bus 404 is down, the messages queue up in the data router 402.
  • the storage system 408 has a distributed database cluster across seven nodes, wherein each instance has about 1 0TB of storage making a total of about 70TB.
  • the entire system has a message buffering capacity of about 120,160GB (20,000 x 6GB + 2x 40GB + 2 x 40GB). However, only about 0.15% of this capacity is in the cloud.
  • a system without the techniques described herein cannot take advantage of the resources that are not in the cloud 1 00. Thus, it may only be able to respond to outages and congestion by buffering messages at an appropriate point in the pipeline. Further, it may be limited to enabling auto-scaling on the buffering components and dealing with the complexity of scaling services simply in order to queue up data until normal service resumes.
  • a system using the techniques described herein may respond to congestion messages which may come from the cloud, from the network itself, or from peers allowing the loT gateways 300, and loT devices 102, to use local resources to queue up messages at their source, or poll sensors less frequently to reduce the rate at which new data is being generated, or both.
  • the techniques described herein binds the two domains, enabling backpressure mechanisms that may exist in the cloud, or elsewhere, such as in the network or on peer devices, to be detected. These can be used to change the operation of edge devices that are closer to the true source of the data arriving to the cloud. Backpressure approaches may be extended to the edge devices using the messages that control the flow of data in the cloud.
  • the backpressure detector may be implemented in the data router 402, or the message bus 404, for example, as a virtual machine (VM).
  • the backpressure detection may be implemented as a virtual sensor in the VM that may be read by other units, such as loT gateways 300 and loT devices 200 for backpressure control of data transfer.
  • the loT gateway 300 may be implemented in the data router 402 or the message bus 404 as a VM. In these embodiments, the data from the loT devices 200 flows to the virtual loT gateway for transfer to other units in the cloud.
  • the virtual loT gateway may implement other types of virtual sensors, for example, calculated values based on sensor readings from loT devices 200.
  • Fig. 5 is a data processing pipeline in the cloud 100 with backpressure detection extended to an loT gateway 300.
  • backpressure messages 410 may sent from the pipeline processing application 406 to all units along the data pipeline, including the data router 402 coupled to the loT gateway 300.
  • backpressure messages 502 may be sent from the data router 402 to the loT gateway 300 outside of the cloud to enable local control of data generation and message transmission rates, allowing local caching of messages.
  • the ⁇ gateways 300 may perform a number of functions. They may act as a data source as they directly poll sensors, or act as data aggregation points or entry points for loT devices sending data through the network.
  • the loT gateways 300 may host the message dispatch and replay systems, and take actions in response to backpressure messages 502 from the cloud.
  • the data router 402 enables a bi-directional edge, e.g., from an loT gateway 300, to cloud communication.
  • a multi-protocol cloud gateway may act as the data router, enabling a number of protocols, such as message queuing telemetry transport (MQTT) and representational state transfer (REST).
  • MQTT message queuing telemetry transport
  • REST representational state transfer
  • the message bus 404 may be a publish/subscribe broker.
  • Apache Kafka from the Apache Software Foundation performs this function. Data flows into the message bus 404 and is consumed from it by pipeline applications.
  • the pipeline processing application 406 stores the data, performs data analysis, and calculates some statistical information such as message throughput rates. It may also generate actuation messages and detects congestion in the pipeline.
  • Akka from Typesafe Inc. hosts this functionality.
  • the pipeline processing components can detect the presence of two types of conditions, backpressure resulting from one or more pipeline components being unavailable and backpressure resulting from a constraint of one or more pipeline components.
  • the storage system 408 may be implemented with any number of server or cloud storage systems.
  • the storage system 408 may be implemented with OpenTSDB API on top of Cloudera.
  • OpenTSDB implements Telnet and REST interfaces.
  • Fig. 6 is a schematic diagram of a backpressure detection system using tracer messages to measure system congestion. Like numbered items are as described with respect to Figs. 1 and 4.
  • the pipeline processing application 406 sends a batch of tracer messages 602-606, one to each of the 1 to n cloud components.
  • a tracer is a special message whose contents and frequency of dispatch are known.
  • the tracer messages 602-606 make their way through each component of the pipeline. For example, tracer message 602 sent to the data router 402 is forwarded on to the message bus 404 as tracer message 608.
  • both tracer messages 608 and 604 are forwarded, e.g., returned, to the pipeline processing application 406 as tracer message 610.
  • a tracer message 606 sent to the storage system 408 is returned as tracer message 602.
  • the pipeline processing application 406 may monitor for returned tracer messages 61 0 and 61 2, or responses, may be stored as indicated by line 614 as any other message, e.g., in a store of responses. Thus, the stored messages can be queried. The absence of one or more messages indicates that a pipeline component may be down.
  • the time delay between sent tracer messages and returned tracer messages, or responses allows a determination of the level of congestion in the pipeline.
  • the congestion level, c as being the smaller of either the throughput congestion level, tc, or the buffer congestion level, be. These values may be determined by sending batches of tracer messages ml to mn to cloud
  • a query can be submitted for the tracer messages. Missing tracer messages indicate one or more components are down or are severely constrained. If tracer message ml and m2 are not received after a configurable period of time, but m3 to mn are, then we know that component 1 , 2, or both, has an issue and c is set to 0 as the pipeline has a serious service availability issue. For each tracer message, the time difference between sending it and the time it was stored is calculated. We also calculate the relative time differences between each tracer message.
  • the tracer message process is repeated for batch 2, 3, and so on, maintaining two counts, a sliding time window with averages for if and to values, which provide the real-time current performance.
  • a second count is an all-time average for if and to values, which provides the baseline performance.
  • Buffer congestion is then calculated for components of the pipeline capable of buffering messages.
  • the buffer congestion metric can be expressed as follows:
  • d f is the current free disk space total in kB
  • m k denotes the average message size in kB
  • m s denotes the current message per second rate as determined from the processing pipeline.
  • d max denotes the maximum disk space available to the system.
  • c The lowest value of c in the pipeline indicates which component is most constrained. Such a data processing pipeline performs only as well as its slowest component. If the value of c has changed significantly, then it may be sent to the loT gateways as an alert, for example, in a message.
  • the congestion value is 0.61 12:
  • the loT gateways can adjust the rates at which they are polling sensors, e.g., generating new data, and the rates at which they are sending data to the cloud.
  • an loT gateway can send a message to any loT devices using the loT gateway as a connection to the cloud instructing the loT devices to adjust sending rates or data collection rates.
  • the loT gateways may slow the rate at which they are sending data to the cloud until the congestion rate recovers closer to one.
  • the back pressure alerts may also be used in the cloud to allow messages to queue up in appropriate components, such as in the message bus if a later component has failed or is congested.
  • Fig. 7 is a process flow diagram of method 700 for an enhanced message dispatch from an edge device.
  • the method 700 begins at block 702 when the system is started and placed in communications with a cloud.
  • sensors and/or sensing nodes are polled on a schedule.
  • the data gathered from the sensing nodes results in name-value observations being written to files in a specified directory by the sensor application.
  • the specified directory is monitored. This is performed to check if a sensor data file has been created or updated within the monitored directory. At block 708, a determination is made as to whether new sensor data is present.
  • the sensor data file is opened and the name-value pair string information is parsed.
  • a JSON payload is created in preparation for dispatch to the destination. Details of the filename and timestamp are inserted as metadata into the processing queue. The message is pushed onto a queue buffer in readiness for dispatch to the destination. The publisher pops a message from the queue.
  • the polling interval is adjusted.
  • the polling interval is initialized as follows:
  • Pi max(r, b) , where /" denotes the current rate and b denotes the backpressure rate.
  • the backpressure rate is the rate adjusted for the current congestion, c, which may be calculated as c x r.
  • the polling interval, pcetate may then be optimized as follows: where A73 ⁇ 4 denotes the message size expressed in kB, ddenotes the amount of free disk space on the edge device expressed in kB, /- denotes the current messaging rate, and b denotes the backpressure rate.
  • process flow proceeds to block 71 6.
  • the message 718 is dispatched to the destination.
  • the message metadata e.g., the filename and timestamp
  • the original sensor message file is moved from the monitored directory to a directory for processed information.
  • Fig. 8 is a process flow diagram of a method 800 for replaying messages that have not been successfully sent to a destination.
  • the backlog is analyzed and a dispatch or replay rate, r, is calculated such that the overall flow of messages to the cloud system is reduced if the cloud is in a backpressure state or is increased if the cloud is not constrained.
  • the method 800 begins at block 802 when it is detected that a message has not been successfully dispatched.
  • a backpressure status is checked by checking if a
  • the loT gateway or device requests the backpressure alert if not present. If a backpressure alert message has been recently received, then there may be no need to contact the cloud. The period can be configured.
  • the communication to obtain the alert may be an MQTT subscription, a REST, or web socket call, among others.
  • the updated replay rate r may be calculated.
  • the mode of operation may be determined from the replay rate value.
  • the general message dispatch frequency is a configurable constant, for example it may be once per minute.
  • an entropy analysis may be performed on the cached messages to determine which ones should be replayed.
  • the messages may be sorted in a LIFO queue (last in, first out) so that the newest observations are sent first. This may be important as recent observations may have higher entropy than older messages, e.g., having more importance to the current state.
  • the LIFO queue may then be further sorted based on an entropy analysis. This may be performed on the cached messages to determine which ones should be replayed.
  • An example of an analysis process is to calculate observations which are outside the normal ranges either in terms of the value seen, or the metric, or the frequency that those value ranges or metrics names are seen. Less frequently occurring ranges or metric names have potentially higher entropy, e.g., information value.
  • process flow ends at block 820. If not, process flow returns to block 804 to continue the method 800. If further network connectivity outages occur during the replay process, the replay mechanism will also end and return to the network connectivity monitoring state.
  • congestion value is 0.61 12. This message could be in any format from any source as long as it contains a numerical value for the congestion level. In a basic implementation, the value could simply be 0 to indicate there is congestion present or 1 to indicate that there is no congestion. In a more sophisticated system the congestion level may be calculated in a specific way and may be representative of a level of congestion which would enable more fine grained decisions to be taken on the loT gateway:
  • loT gateway messaging orchestration is driven by the backend pipeline system and can operate on a per-gateway in addition to all- gateway basis.
  • Fig. 9 is a schematic diagram of an loT system 900 in which the cloud- based data processing pipeline 902 is able to orchestrate how the cached messages are replayed. Three examples are depicted, first in-first out (FIFO), last in-first out (LIFO), and random message selection.
  • FIFO first in-first out
  • LIFO last in-first out
  • random message selection e.g., random message selection.
  • multiple loT endpoints e.g., sensors 904 in this example, are connected to loT gateways 906-910.
  • the loT gateways 906-910 in turn are connected to the cloud-based data processing pipeline 902.
  • Each of the loT gateways 906-910 has a message cache 912-916 of varying sizes. These cached messages may be due to temporary network outages which prevented the normal dispatch of sensor messages and had to be stored on the loT gateway 906, 908, or 910 until network connectivity was restored. [0111] Normally, upon the restoration of network connectivity, the loT gateways 906-910 would commence replaying the cached messages beginning with the oldest message in the cache and progressing to the latest cached message until the cache was exhausted. In addition, a normal objective may be to replay these cached messages as quickly as possible. However, this can present problems for the cloud- based data processing pipeline 902, e.g., a data deluge resulting in large processing load spikes, congestion, and high network traffic loads.
  • the cloud-based data processing pipeline 902 may orchestrate how the cached gateway messages are replayed.
  • Three systems may be used, with different loT gateways 906, 908 or 910 instructed to send messages by different methods.
  • a first loT gateway 906 may be instructed to replay messages from the message cache 912 as first in-first out (FIFO). This is the default behavior, as the endpoint messages are replayed in the same time-order that they were cached.
  • FIFO first in-first out
  • a second loT gateway 908 may be instructed to replay messages from the message cache 914 as last in-first out (LIFO). This may be used for time-sensitive cached messages, such as control systems used for pipelines, traffic, and the like. Upon network connectivity restoration, the latest messages are replayed first in order to minimize the impact on time-sensitive loT applications.
  • LIFO last in-first out
  • a third loT gateway 910 may be instructed to replay messages from the message cache 91 6 by a random message selection and dispatch (sampled). As the number of cached messages can extend to several thousand, this technique may provide a more accurate picture of the period during which data was lost. This strategy enables time-sampled messages to be replayed in order to provide backend applications with sufficient data points to develop a summarized analysis over the period affected by the network outage. As the replay strategy progresses, the intermediate messages are then replayed to eventually backfill the entire time period.
  • the intervals between message replay events can be configured by the cloud-based data processing pipeline 902. This is especially useful for minimizing the potential for large processing workload spikes due to data deluges.
  • the replay rate can be finely-tuned on a per loT gateway if necessary.
  • Additional modes and variations of these three example modes may be supported by this system.
  • the cloud-based data processing pipeline 902 can configure the loT gateway messaging strategy using two methods, by broadcasting a global control message to every connected gateway for a blanket messaging strategy change, or by sending a targeted dispatch of a control message to an loT gateway 906, 908, or 910.
  • the control messages may not be protocol-specific.
  • the message may include a JavaScript Object Notation (JSON) message, an MQTT topic or payload, or a REST message, such as an HTTP POST, among others.
  • JSON JavaScript Object Notation
  • loT gateways may be distributed across a large urban and suburban area. Each gateway may responsible for ten loT endpoints, such as sensors or loT devices. The loT gateways dispatch one observation message from each of the ten endpoints per minute resulting in 600 messages per hour. In this example, the average message size sent from each gateway may be about 3 kB. The total number of messages per hour for the entire deployment is about 6 million, and the total size of the entire messaging workload is about 17.16 GB / hour.
  • gateways [0118] If a network connectivity outage affects 10% of the gateways for a 2 hour period, the 1 000 gateways involved must each cache their 600 messages / hour for this 2 hour period until connectivity is restored. In total, 12 million messages have been cached on gateways representing about 3.43 GB.
  • the total size of the messaging payload may temporarily increase to about 20.59 GB if the cached messages are all replayed within an hour period following the restoration of network connectivity. This represents a 20% increase in backend data pipeline processing workload.
  • the data processing pipeline orchestrates the replay procedure using a combination of sampled data, e.g., instructing the loT gateways involved to take every 10th measurement, back-off sending replayed messages by a factor of ten, and using LIFO for time-critical applications, the increase in backend data pipeline processing workload will be about 2%. Thus, the extra workload is reduced by a factor of ten.
  • Fig. 10 is a process flow diagram of a method for orchestrating messages. The method starts at block 1002, for example, when an loT gateway is powered. At block 1004, communications between the loT gateway and backend data processing pipeline is established. At block 1006, the gateway commences the dispatch of messages, if endpoint messages are pending.
  • the loT gateway checks for downstream configuration messages from the backend.
  • a determination is made as to whether a mode change requested has been received. If not, process flow returns to block 1006 to continue with message dispatching.
  • process flow proceeds to block 1012, where the message is parsed.
  • a determination is made as to whether the LIFO mode is selected. If so, the LIFO mode is configured at block 1016. Process flow then returns to block 1 006.
  • the FIFO mode is selected at block 1022.
  • the FIFO mode is then configured at block 1 024. Process flow is then returned to block 1006.
  • Fig. 1 1 is a schematic drawing of a FIFO buffer, showing the addition of messages to the queue 1 100 and the removal of messages from the queue 1 100. In this schematic, time 1 1 02 is progressing upwards. Thus, newly created messages 1 104 are added to the top of the queue 1 100, while older messages 1 1 06 are dispatched from the bottom of the queue 1 100.
  • Fig. 12 is a process flow of a method 1200 for sending data from an loT gateway using a FIFO buffer.
  • the method 1 200 starts at block 1202, when a FIFO mode has been selected, and the buffer includes messages that have not been successfully dispatched.
  • the method 1200 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent.
  • the SQLite database is used, although any small footprint databases may be used.
  • the index of the selected message is obtained using a SELECT statement.
  • the message replay operation selects the oldest message on the queue, e.g., having MAX(index) or message associated with the maximum index of the rows.
  • the message is dispatched.
  • a determination is made as to whether the send was successful. If not, process flow returns to block 1204 to wait for the next replay event.
  • process flow proceeds to block 1212.
  • the successfully dispatched message is removed from the cache, and process flow returns to block 1204 to wait for the next replay event.
  • next oldest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
  • Fig. 13 is a schematic drawing of a LIFO buffer, showing the addition of messages to the queue 1 300 and the removal of messages from the queue 1300.
  • time 1302 is progressing upwards.
  • newly created messages 1304 are added to the bottom of the queue 1 300, shifting older messages up.
  • the younger messages 1 306 are also dispatched from bottom of the queue 1300 in preference to older messages. In this way, time critical messages may be sent and received in preference to older, possibly less relevant, messages.
  • Fig. 14 is a process flow of a method 1400 for sending data from an loT gateway using a LIFO buffer.
  • the method 1400 starts at block 1402, when a LIFO mode has been selected, and the buffer includes messages that have not been successfully dispatched.
  • the method 1400 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent.
  • the SQLite database is used, although any small footprint databases may be used.
  • the message replay operation selects the oldest message on the queue, e.g., having MIN(index), or the message associated with the minimum index of the rows.
  • the message is dispatched.
  • a determination is made as to whether the send was successful. If not, process flow returns to block 1404 to wait for the next replay event.
  • process flow proceeds to block 1412.
  • the successfully dispatched message is removed from the cache, and process flow returns to block 1404 to wait for the next replay event.
  • next youngest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
  • Fig. 15 is a schematic drawing of a sampled buffer, showing the addition of messages to the queue 1 500 and the removal of messages from the queue 1500.
  • time 1502 is progressing upwards.
  • Newly created messages 1504 are added to the bottom of the queue 1500, shifting older messages up, but the newly created messages may be added to either end of the queue 1500.
  • a random sampling technique is used to select messages 1506 from the queue 1500 for dispatch. In this way, the back end processing application may interpolate, or otherwise predict values, between readings. As more readings arrive, the
  • Fig. 16 is a process flow of a method 1600 for sending data from an loT gateway using a sampled buffer.
  • the method 1600 starts at block 1 602, when a sampling mode has been selected, and the buffer includes messages that have not been successfully dispatched.
  • the method 1600 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent.
  • the SQLite database may be used, although any small footprint databases may be used.
  • the youngest and oldest messages may first be dispatched to bracket the measurement set.
  • a random number is generated, wherein the random number is bounded by the MIN and MAX values of the cache range.
  • the index of the selected message is obtained using a SELECT statement.
  • the message replay operation selects the message on the queue having the index of the random.
  • the message is dispatched.
  • a determination is made as to whether the send was successful. If not, process flow returns to block 1604 to wait for the next replay event.
  • process flow proceeds to block 1614.
  • the successfully dispatched message is removed from the cache, and process flow returns to block 1404 to wait for the next replay event.
  • next youngest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
  • Fig. 17 is a block diagram of a non-transitory, computer readable medium 1700 that includes instructions to direct a processor 1 702 to manage
  • the processor 1702 can access the computer readable medium over a bus 1 704, for example, as described with respect to Figs. 2 and 3.
  • the instructions may include a code block 1706 to direct the processor 1702 to check for network congestion in the cloud. This may include code that instructs the processor to check for congestion alerts from a system in the cloud. In some embodiments, it may include code that directs the processor 1702 to sends tracer messages to discover and measure network congestion.
  • a code block 1 708 may direct the processor 1702 to dispatch messages to the cloud. This may include code to direct the processor 1702 to adjust the rates at which the messages are sent, the rates that data is collected, or both, depending on the amount of congestion in the cloud.
  • code may direct the processor 1702 to determine if the message was successfully dispatched, and remove the message from a cache.
  • a code block 1 710 may direct the processor 1702 to calculate the rate at which to send the messages, based on the congestion measured in the cloud and sent by an alert.
  • a code block 1712 may direct the processor 1702 to change the method that replayed messages are sent, e.g., FIFO, LIFO, or sampled.
  • a code block 1714 may direct the processor 1702 to replay messages based on the network congestion, and the method selected.
  • Example 1 provides an apparatus for managing communication
  • the apparatus includes an loT device that includes a data transfer controller configured to dispatch messages to the pipeline processing application in the cloud; and a backpressure monitor configured to accept the backpressure alert messages and adjust a dispatch of messages from the data transfer controller.
  • Example 2 includes the subject matter of Example 1 , wherein the responses include forwarded tracer messages.
  • Example 3 includes the subject matter of either of Examples 1 or 2, wherein the loT device includes an loT gateway coupled to a plurality of loT devices and wherein the loT gateway is configured to pass messages from the plurality of loT devices to the pipeline processing application.
  • Example 4 includes the subject matter of any of Examples 1 to 3, wherein the loT device includes an loT gateway coupled to a plurality of sensors.
  • Example 5 includes the subject matter of any of Examples 1 to 4, including a data router in the cloud interfaced to the loT device, wherein the data router is configured to send backpressure alert messages to the loT device.
  • Example 6 includes the subject matter of any of Examples 1 to 5, including a storage device, wherein the storage device includes a store of responses to the tracer messages, and wherein the store of responses is queried to determine time differences between messages.
  • Example 7 includes the subject matter of any of Examples 1 to 6, wherein the loT device includes a sensor configured to measure a parameter, and a network interface to dispatch a message including the parameter.
  • Example 8 provides a method for measuring backpressure in a computing cloud. The method includes sending out tracer messages to a plurality of components in a cloud, monitoring for response messages from the plurality of components, storing received response messages in a storage system, and querying the response messages to determine network conditions in the cloud. An alert message is created to report network conditions to an internet of things (loT) device.
  • LoT internet of things
  • Example 9 includes the subject matter of Example 8, including identifying that a component has failed by a missing response message.
  • Example 10 includes the subject matter of either of Examples 8 or 9, including determining a time difference between sending a tracer message and storing a corresponding response message.
  • Example 1 1 includes the subject matter of any of Examples 8 to 1 0, including calculating a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud.
  • Example 12 includes the subject matter of any of Examples 8 to 1 1 , including setting c as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
  • Example 13 includes the subject matter of any of Examples 8 to 1 2, including calculating fc for a component as a ratio of a current time for a response divided by a baseline time for the response from the component.
  • Example 14 includes the subject matter of any of Examples 8 to 1 3, including calculating be from an amount of free disk space, a message rate, a size of messages, or a number of seconds required to fill a buffer, or any combinations thereof.
  • Example 15 includes the subject matter of any of Examples 8 to 14, including calculating be by calculating the number of seconds, n, required to fill a buffer using the following equation:
  • a buffer congestion level, bc[n] is calculated using the following equation: 1, A if) dp ⁇ Pt h res h
  • dp denotes a free disk space percentage on the cloud components
  • P resh is a configurable free disk space threshold, e.g. 50%.
  • bc n is calculated using the following equation:
  • dmax denotes the maximum disk space available to the system.
  • Example 16 includes the subject matter of any of Examples 8 to 1 5, including setting c to a lowest value determined for a component in a data processing pipeline.
  • Example 17 includes the subject matter of any of Examples 8 to 1 6, including generating an alert message including c.
  • Example 18 includes the subject matter of any of Examples 8 to 1 7, including generating a java script object notation (JSON) message including c.
  • JSON java script object notation
  • Example 19 includes the subject matter of any of Examples 8 to 1 8, including sending the alert message to the loT device.
  • Example 20 includes the subject matter of any of Examples 8 to 1 9, including storing the alert message for access by the loT device.
  • Example 21 provides a non-transitory, computer readable medium including code to direct a processor to send out tracer messages to a plurality of components in a cloud, monitor for response messages from the plurality of components, store received response messages in a storage system, and query the response messages to determine network conditions in the cloud. Code is included to direct the processor to create an alert message to report network conditions to an internet of things (loT) device.
  • LoT internet of things
  • Example 22 includes the subject matter of Example 21 , including code to direct a processor to identify that a component has failed by a missing response message.
  • Example 23 includes the subject matter of either of Examples 21 or 22, including code to direct a processor to calculate a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud, wherein c is set as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
  • Example 24 includes the subject matter of any of Examples 21 to 23, including code to direct a processor to calculate fc for a component as a ratio of a current time for a response divided by a baseline time for the response from the component.
  • Example 25 includes the subject matter of any of Examples 21 to 24, including code to direct a processor to calculate be from an amount of free disk space, a message rate, a size of messages, or a number of seconds required to fill a buffer, or any combinations thereof.
  • Example 26 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a pipeline processing application, wherein the pipeline processing application is configured to: send tracer messages to each of a plurality of components in a cloud; determine a congestion level, c, by time differences between responses and the tracer messages; and generate backpressure alert messages for an loT device.
  • the pipeline processing application is configured to: send tracer messages to each of a plurality of components in a cloud; determine a congestion level, c, by time differences between responses and the tracer messages; and generate backpressure alert messages for an loT device.
  • Example 27 includes the subject matter of Example 26, wherein the responses include forwarded tracer messages.
  • Example 28 includes the subject matter of either of Examples 26 or 27, including an loT device.
  • the loT device includes a data transfer controller configured to dispatch messages to the pipeline processing application in the cloud and a backpressure monitor configured to accept the backpressure alert messages and adjust a dispatch of messages from the data transfer controller.
  • Example 29 includes the subject matter of any of Examples 26 to 28, wherein the loT device includes an loT gateway coupled to a plurality of loT devices and wherein the loT gateway is configured to pass messages from the plurality of loT devices to the pipeline processing application.
  • Example 30 includes the subject matter of any of Examples 26 to 29, including a data router in the cloud interfaced to an loT device, wherein the data router is configured to send backpressure alert messages to the loT device.
  • Example 31 includes the subject matter of any of Examples 26 to 30, including a storage device, wherein the storage device includes a store of responses to the tracer messages, and wherein the store of responses is queried to determine time differences between messages.
  • Example 32 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a pipeline processing application, wherein the pipeline processing application includes a means for determining a congestion level, c, in a cloud.
  • the pipeline processing application includes a means for determining a congestion level, c, in a cloud.
  • Example 33 includes the subject matter of Example 32, including an loT device, including means for adjusting a dispatch of messages based, at least in part, on the congestion level.
  • Example 34 includes the subject matter of Examples 32 or 33, wherein the loT device includes means for passing messages from a plurality of loT devices to the pipeline processing application.
  • Example 35 includes the subject matter of any of Examples 32 to 34, wherein the pipeline processing application comprises means for sending
  • Example 36 provides an apparatus for managing communication congestion for internet of things (loT) devices.
  • the apparatus includes an loT device that includes a data transfer controller configured to create sensor messages and dispatch the sensor messages to a pipeline processing application in a cloud.
  • the loT device includes a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the data transfer controller, a polling interval for polling a sensor, or both.
  • a data store is configured to buffer messages that cannot be sent due to communication issues.
  • Example 37 includes the subject matter of Example 36, wherein the backpressure alert messages include a congestion level, c.
  • Example 38 includes the subject matter of either of Examples 36 or 37, wherein the loT device includes an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to pass messages from the number of loT devices to the pipeline processing application.
  • Example 39 includes the subject matter of any of Examples 36 to 38, wherein the loT device includes an loT gateway coupled to a number of sensors.
  • Example 40 includes the subject matter of any of Examples 36 to 39, wherein the backpressure monitor is configured to calculate the polling interval.
  • Example 41 includes the subject matter of any of Examples 36 to 40, wherein the backpressure monitor is configured to calculate a replay rate.
  • Example 42 provides a method for controlling an internet of things (loT) device based on a congestion level, c.
  • the method includes polling a sensor, writing a measurement to a file, parsing the file to create a message, and checking for a backpressure alert message. If a backpressure alert message is found the message is saved to a cache and a polling interval is changed.
  • LoT internet of things
  • Example 43 includes the subject matter of Example 42, including initializing a polling interval, p recipe as a maximum value of a current rate, r, or a backpressure rate, b.
  • Example 44 includes the subject matter of any of Examples 42 or 43, including if the backpressure alert message is not found, dispatching the message to a consumer, and determining if the dispatch was successful. If the dispatch was successful the file is moved to a processed directory.
  • Example 45 includes the subject matter of any of Examples 42 to 44, including if the dispatch was not successful, saving the message to a cache.
  • Example 46 includes the subject matter of any of Examples 42 to 45, including calculating a new polling interval, ptude using the following equation:
  • Example 47 includes the subject matter of any of Examples 42 to 46, including replaying the message from the cache. Replaying the message includes checking if a backpressure alert is present at the loT device, and, if not, requesting the backpressure alert message from a cloud. A replay rate, r, is calculated. If the replay rate is zero, then iterating checking for the backpressure alert.
  • Example 48 includes the subject matter of any of Examples 42 to 47, including calculating an updated replay rate by the following equation:
  • r' denotes the updated replay rate and /denotes a message dispatch frequency.
  • the replay rate is replaced with the updated replay rate.
  • Example 49 includes the subject matter of any of Examples 42 to 48, wherein / is once per minute.
  • Example 50 includes the subject matter of any of Examples 42 to 49, including, if the replay rate is greater than zero, selecting the message from the cache, and dispatching the message to the cloud.
  • Example 51 includes the subject matter of any of Examples 42 to 50, including checking if the cache is empty, and, if not, replaying the message from the cache.
  • Example 52 provides a non-transitory, computer readable medium including instructions to direct a processor to check for network congestion, adjust a replay rate, and dispatch a message to a cloud.
  • Example 53 includes the subject matter of Example 52, including instructions to direct the processor to adjust a polling interval.
  • Example 54 includes the subject matter of any of Example 52 or 53, including instructions to direct the processor to replay messages from a queue.
  • Example 55 includes the subject matter of any of Example 52 to 54, including instructions to direct the processor to request a backpressure alert message.
  • Example 56 includes the subject matter of any of Example 52 to 55, including instructions to direct the processor to create the message.
  • Example 57 provides an internet of things (loT) device for managing communication congestion, including a data transfer controller configured to create sensor messages and dispatch the sensor messages to a pipeline processing application in a cloud.
  • the loT device includes a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the data transfer controller, a polling interval for polling a sensor, or both.
  • the loT devices also includes a data store configured to buffer messages that cannot be sent due to communication issues.
  • Example 58 includes the subject matter of Example 57, wherein the backpressure alert messages include a congestion level, c.
  • Example 59 includes the subject matter of any of Examples 57 or 58, wherein the backpressure monitor is configured to calculate the polling interval.
  • Example 60 includes the subject matter of any of Examples 57 to 59, wherein the backpressure monitor is configured to calculate a replay rate.
  • Example 61 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a means for adjusting a rate of dispatch of sensor messages from the loT device, a polling interval for polling a sensor, or both.
  • LoT internet of things
  • Example 62 includes the subject matter of Example 61 , including a means for calculating a congestion level, c.
  • Example 63 includes the subject matter of any of Examples 61 or 62, including a means for calculating a polling interval.
  • Example 64 includes the subject matter of any of Examples 61 to 63, including a means for calculating a replay rate.
  • Example 65 provides an apparatus for managing communication congestion for internet of things (loT) devices, including an loT device that includes a data transfer controller configured to create a sensor message and dispatch the sensor message to a pipeline processing application in a cloud.
  • the loT device includes a data store configured to store the sensor message in a cache if it cannot be sent due to communication issues, and a data backlog transfer controller configured to send the sensor message from the data store.
  • Example 66 includes the subject matter of Examples 65, wherein the data backlog transfer controller is configured to send the sensor message from the cache using a first in-first out mode, a last in-first out mode, or a sampled mode.
  • Example 67 includes the subject matter of either of Examples 65 or 66, wherein the data backlog transfer controller is configured to accept control messages that change a mode for sending the sensor message.
  • Example 68 includes the subject matter of any of Examples 65 to 67, wherein the loT device includes an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to send sensor messages from the number of loT devices to the pipeline processing application.
  • Example 69 includes the subject matter of any of Examples 65 to 68, wherein the loT device includes an loT gateway coupled to a number of sensors.
  • Example 70 includes the subject matter of any of Examples 65 to 69, including a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the cache.
  • Example 71 provides a method for controlling communications from an internet of things (loT) device.
  • the method includes dispatching a message to a data processing application in a cloud using a selected mode for selecting the message from a cache, and checking for a request from the cloud to change the mode.
  • LoT internet of things
  • Example 72 includes the subject matter of Examples 71 , wherein, if the request is received, the request to change the mode is parsed. A determination is made as to whether the request is to change to a last in-first out (LIFO) mode, and, if so, configuring the LIFO mode. A determination is made as to whether the request is to change to a sampled mode, and, if so, configuring the sampled mode. A determination is made as to whether the request is to change to change to a first in- first out (FIFO) mode, and, if so, configuring the FIFO mode.
  • LIFO last in-first out
  • FIFO first in- first out
  • Example 73 includes the subject matter of either of Examples 71 or 72, including dispatching the message using a LIFO mode. Dispatching the message using the LIFO mode includes selecting the message from a queue, wherein the message is a last message added to the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
  • Example 74 includes the subject matter of any of Examples 71 to 73, including dispatching the message using a FIFO mode. Dispatching the message using the FIFO mode includes selecting the message from a queue, wherein the message is a first message added to the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
  • Example 75 includes the subject matter of any of Examples 71 to 74, including dispatching the message using a sampled mode. Dispatching the message using the sampled mode includes selecting the message from a queue, wherein the message is randomly selected from the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
  • Example 76 includes the subject matter of any of Examples 71 to 75, wherein dispatching the message, includes checking if a backpressure alert is present at an loT device. If a backpressure alert is not present, a backpressure alert message is requested from a cloud component. A replay rate, r; is calculated, and if the replay rate is zero, then iterating checking for the backpressure alert.
  • Example 77 includes the subject matter of any of Examples 71 to 76, including calculating an updated replay rate by the following equation:
  • r' denotes the updated replay rate and /denotes a message dispatch frequency; and replacing a current replay rate with the updated replay rate.
  • Example 78 includes the subject matter of any of Examples 71 to 77, wherein / is once per minute.
  • Example 79 includes the subject matter of any of Examples 71 to 78, including checking if a queue is empty, and, if not, selecting another sensor message from the queue.
  • Example 80 provides a non-transitory, computer readable medium including instructions to direct a processor to adjust a replay mode, wherein the replay mode is selected from a last in-first out (LIFO) mode, a first in-first out (FIFO) mode, or a sampled mode. Instructions are included to direct a processor to adjust a replay rate, select a message from a queue using the replay mode, and dispatch the message to a cloud.
  • LIFO last in-first out
  • FIFO first in-first out
  • Example 80 provides a non-transitory, computer readable medium including instructions to direct a processor to adjust a replay mode, wherein the replay mode is selected from a last in-first out (LIFO) mode, a first in-first out (FIFO) mode, or a sampled mode. Instructions are included to direct a processor to adjust a replay rate, select a message from a queue using the replay mode, and dispatch the message to a cloud.
  • LIFO last in-first out
  • FIFO first in-
  • Example 81 includes the subject matter of Example 80, including instructions to direct the processor to request a backpressure alert message.
  • Example 82 includes the subject matter of either of Examples 80 or 81 , including instructions to direct the processor to adjust the replay rate based, at least in part, on the backpressure alert message.
  • Example 83 includes the subject matter of any of Examples 80 to 82, including instructions to determine if the message has been successfully dispatched, and, if so, delete the message from the queue.
  • Example 84 includes the subject matter of any of Examples 80 to 83, including instructions to direct the processor to create the message.
  • Example 85 provides an internet of things (loT) device for managing communication congestion.
  • the loT device includes a data transfer controller configured to create a sensor message and dispatch the sensor message to a pipeline processing application in a cloud.
  • a data store is configured to store the sensor message in a cache if it cannot be sent due to communication issues.
  • a data backlog transfer controller is configured to send the sensor message from the data store when the communications issues are not present.
  • Example 86 includes the subject matter of Example 85, wherein the data backlog transfer controller is configured to send the sensor message from the cache using a first in-first out mode, a last in-first out mode, or a sampled mode.
  • Example 87 includes the subject matter of either of Examples 85 or 86, wherein the data backlog transfer controller is configured to accept control messages that change a mode for sending the sensor message.
  • Example 88 includes the subject matter of any of Examples 85 to 87, including an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to send sensor messages from the number of loT devices to the pipeline processing application.
  • Example 89 includes the subject matter of any of Examples 85 to 88, including an loT gateway coupled to a number of sensors.
  • Example 90 includes the subject matter of any of Examples 85 to 89, including a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the cache.
  • Example 91 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a means for sending a backlogged message from a cache.
  • LoT internet of things
  • Example 92 includes the subject matter of Example 91 , including a means for sending the sensor message using a first in-first out mode, a last in-first out mode, or a sampled mode.
  • Example 93 includes the subject matter of either of Examples 91 or 92, including a means for changing a mode for sending the sensor message.
  • Example 94 includes the subject matter of any of Examples 91 to 93, including a means for adjusting a rate of dispatch of messages from the cache.
  • Some embodiments may be implemented in one or a combination of hardware, firmware, and software. Some embodiments may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by a computing platform to perform the operations described herein.
  • a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine, e.g., a computer.
  • a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; or electrical, optical, acoustical or other form of propagated signals, e.g., carrier waves, infrared signals, digital signals, or the interfaces that transmit and/or receive signals, among others.
  • An embodiment is an implementation or example. Reference in the specification to "an embodiment,” “one embodiment,” “some embodiments,” “various embodiments,” or “other embodiments” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least some embodiments, but not necessarily all embodiments, of the techniques. The various appearances of "an embodiment”, “one embodiment”, or “some
  • each system shown in a figure the elements in some cases may each have a same reference number or a different reference number to suggest that the elements represented could be different and/or similar.
  • an element may be flexible enough to have different implementations and work with some or all of the systems shown or described herein.
  • the various elements shown in the figures may be the same or different. Which one is referred to as a first element and which is called a second element is arbitrary.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Cardiology (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

A method and apparatus for managing network congestion for internet-of-things (IoT) devices is provided. An exemplary method includes sending out tracer messages to a plurality of cloud components. Response messages are monitored from the plurality of cloud components. Response messages received are stored in a storage system. The response messages are queried to determine conditions in the cloud. An alert message is created to report network conditions to an IoT device.

Description

MANAGING COMMUNICATION CONGESTION
FOR INTERNET OF THINGS DEVICES
Cross Reference to Related Application
[0001] The present application claims the benefit of the filing date of United States Patent Application Serial No. 14/757,774, by Nolan et al., entitled "Managing Communication Congestion for Internet of Things Devices," filed December 23, 2015, and is incorporated herein by reference.
Technical Field
[0002] The present techniques relate generally to Internet of Things (loT) devices. More specifically the present techniques relate to devices that can manage communication congestion.
Background
[0003] It has been estimated that the Internet of Things (loT) may bring Internet connectivity to 50 billion devices by 2020. However, this number of devices may lead to substantial crowding of communications channels between loT devices and the coordinators or servers that are receiving the data, especially during equipment failures. The crowding of the communications channels may lead to the loss of messages from individual loT devices, leading to incomplete data sets.
Brief Description of the Drawings
[0004] Fig. 1 is a drawing of a cloud computing network, or cloud, in
communication with a number of Internet of Things (loT) devices, at least some of which are communicating with servers.
[0005] Fig. 2 is a block diagram of components that may be present in an loT device that can respond to backpressure and control data transfer.
[0006] Fig. 3 is a block diagram of an loT gateway that may be used to collect and send messages from a number of loT devices.
[0007] Fig. 4 is a block diagram of an example of an loT deployment with backpressure control residing completed in the cloud. [0008] Fig. 5 is a data processing pipeline in the cloud 100 with backpressure detection extended to an loT gateway.
[0009] Fig. 6 is a schematic diagram of a backpressure detection system using tracer messages to measure system congestion.
[0010] Fig. 7 is a process flow diagram of method for an enhanced message dispatch from an edge device.
[0011] Fig. 8 is a process flow diagram of a method for replaying messages that have not been successfully sent to a destination.
[0012] Fig. 9 is a schematic diagram of an loT system in which the cloud-based data processing pipeline is able to orchestrate how the cached messages are replayed.
[0013] Fig. 10 is a process flow diagram of a method for orchestrating messages.
[0014] Fig. 1 1 is a schematic drawing of a FIFO buffer, showing the addition of messages to the queue and the removal of messages from the queue.
[0015] Fig. 12 is a process flow of a method for sending data from an loT gateway using a FIFO buffer.
[0016] Fig. 13 is a schematic drawing of a LIFO buffer, showing the addition of messages to the queue and the removal of messages from the queue.
[0017] Fig. 14 is a process flow of a method for sending data from an loT gateway using a LIFO buffer.
[0018] Fig. 15 is a schematic drawing of a sampled buffer, showing the addition of messages to the queue and the removal of messages from the queue.
[0019] Fig. 16 is a process flow of a method for sending data from an loT gateway using a sampled buffer.
[0020] Fig. 17 is a block diagram of a non-transitory, computer readable medium 1700 that includes instructions to direct a processor to manage communications between loT gateways and devices and systems in the cloud.
[0021] The same numbers are used throughout the disclosure and the figures to reference like components and features. Numbers in the 100 series refer to features originally found in Fig. 1 ; numbers in the 200 series refer to features originally found in Fig. 2; and so on. Description of the Embodiments
[0022] The internet of things (loT) is a concept in which a large number of computing devices are interconnected to each other and to the Internet to provide functionality and data acquisition at very low levels. For example, loT networks may include commercial and home automation devices, such as water distribution systems, electric power distribution systems, pipeline control systems, plant control systems, light switches, thermostats, locks, cameras, alarms, motion sensors, and the like. These devices, termed loT devices herein, may be accessible through remote computers, servers, and other systems, for example, to control systems or access data. Further loT devices may include loT gateways, used to couple other loT devices to cloud applications.
[0023] Global deployments of loT devices generally rely on communications to back end cloud based services. Given the scale of the underlying wireless networks involved in the global deployment of billions of loT devices, outages and loss of network connectivity may often occur. The temporary network connectivity issues may result in the loss of valuable sensor data and may significantly increase the network load and backend server processing requirements when cached messages are dispatched or replayed.
[0024] The techniques described herein provide backend data processing pipelines with the ability to protect themselves against a data deluge following a lengthy network connectivity outage affecting part of the deployed network. Using the techniques, data processing pipelines use spare downstream message capacity to globally or individually control the rate and mode of replay for loT gateways to significantly reduce the potential for large spikes in data processing load and pipeline congestion.
[0025] As described in examples herein, a system may calculate a congestion level and send alerts to edge devices. As used herein, an edge device may be an loT gateway in communication with a number of loT devices and with servers, or other devices, in a computing cloud. In some embodiments, the edge device may be an loT device that is directly in communication with the computing cloud. Further, a computing cloud, or cloud, includes mobile phone systems, internet service providers, routers, networks, servers, and other units that transfer or consume data. The alerts can also be consumed and acted upon by any interested party, for example a pipeline statistics consumer. Any number of communication issues may interfere with the transfer of messages to the cloud, including failures in cloud based equipment, such as routers and server, among others.
[0026] Examples described herein may include a data processing pipeline with backpressure detection to identify communication issues in the cloud through congestion. Once detected, the congestion may be quantified based on service availability, throughput, and available resources. Further, a cloud to edge alert system may be used to communicate backpressure states in the cloud to an edge device, for example, to trigger a behavior change in the edge device. The alert system may send backpressure alert messages to the edge device, or create backpressure alert messages to be accessed by the edge device, or both.
[0027] Behavior changes in the edge device may include different reporting mechanisms during times of congestion, different methods for sending data backlogs once the congestion is relieved, or both. For example, loT gateway based message dispatch and replay mechanisms may be used to implement automatic self-adaption in relation to dynamic message caching and sensor polling decisions.
[0028] Upon receipt of a backpressure alert, sensor measurements can be cached using local resources on the edge device, e.g., loT gateway or loT device, using a buffer. This may occur automatically in response to a temporary overload of the available cloud resources. Further, the rate that messages are sent may be automatically adjusted, e.g., reduced or increased, depending on changes in the level of congestion. The behaviors may be implemented in response to messages from the network itself or from peer systems. For example, the system may dynamically vary the rate at which sensors are polled to measure new data and the rate that data is dispatched to the data processing pipeline in the cloud. Both the congestion rate in the cloud and the remaining local resources, e.g., the ability to cache data at the edge device, may be considered in these determinations.
[0029] Once normal operation resumes, the system may automatically process any backlog of sensor measurements which have been cached locally during the backpressure event. The measurement timestamps are preserved and the system automatically back-fills any time periods where a capacity issue prevented the realtime dispatch of measurements from the device.
[0030] Data cached on the edge devices does not have to be dispatched in the same time order as when they were obtained. The system provides a configurable method to dispatch latest data measured first, latest data measured last, or dispatch random samples of stored data. This provides flexibility to prioritize edge data, e.g., time-sensitive cached data, for improved summary calculations by backend systems.
[0031] Fig. 1 is a drawing of a cloud computing network, or cloud 100, in communication with a number of Internet of Things (loT) devices 102, at least some of which are communicating with servers 104. The cloud 100 may represent the Internet, or may be a wide area network, such as a proprietary network for a company. The loT devices 102 may include any number of different types of devices, grouped in various combinations. For example, a traffic control group 106 may include loT devices 102 along streets in a city. These loT devices may include stoplights, traffic flow monitors, cameras, and the like. The traffic control group 1 06, or other subgroups, may be in communication with the cloud 100 through a subnetwork 108, such as a local area network, wireless local area network, and the like. The loT devices 102 may use another loT device 1 02 as an loT gateway 1 18 to communicate with the cloud 1 00.
[0032] Other groups of loT devices 1 02 may include remote weather stations 109, local information terminals 1 1 0, alarm systems 1 12, automated teller machines 1 14, and alarm panels 1 16, among many others. Each of these loT devices 102 may be in communication with other loT devices 102, with servers 1 04, or both.
[0033] As can be seen from Fig. 1 , a large number of loT devices 1 02 may be communicating through the cloud 100. Each of these loT devices 102 may generate a time sequenced data stream including, for example, a sensor data stream. For example, the traffic control group 106 of loT devices 102, may send traffic counts, traffic speed, images, precipitation amounts, temperature measurements, and the like. Given the number of loT devices 102 that are sending data, the network loading may be substantial. If any problems develop in the data pipeline from the loT devices 102, in the cloud 100, or at the servers 104, data may be out of sequence or lost. [0034] As described in further detail herein, the network congestion may be monitored to change the functionality of the loT devices 102, e.g., controlling the rate and sequence of data collection and transfer, herein collectively termed data transfer. This may be performed by backpressure monitoring in the cloud 100, at an loT gateway 1 18, or at an loT device 102. The backpressure monitoring in the cloud 100 may be used to generate alerts that are sent to an loT gateway 1 18 or loT device 102 to control data transfer.
[0035] Fig. 2 is a block diagram of components that may be present in an loT device 200 that can respond to backpressure and control data transfer. Like numbered items are as described with respect to Fig. 1 . The loT device 200 may include any combinations of the components. The components may be implemented as ICs, portions thereof, discrete electronic devices, or other modules, logic, hardware, software, firmware, or a combination thereof adapted in the loT device 200, or as components otherwise incorporated within a chassis of a larger system. The block diagram of FIG. 2 is intended to show a high level view of components of the loT device 200. However, some of the components shown may be omitted, additional components may be present, and different arrangement of the
components shown may occur in other implementations. The loT device 200 may be a traffic monitoring device, a remote weather station, a programmable logic controller (PLC) or remote terminal unit (RTU) in a SCADA (supervisory control and data acquisition) network, an alarm system device, a smart television, a cellular telephone, or any number of other loT devices 102 as discussed with respect to Fig. 1 .
[0036] As seen in Fig. 2, the loT device 200 may include a processor 202, which may be a microprocessor, a multi-core processor, a multithreaded processor, an ultra-low voltage processor, an embedded processor, or other known processing element. The processor 202 may be a part of a system on a chip (SoC) in which the processor 202 and other components are formed into a single integrated circuit, or a single package. As an example, the processor 202 may include an Intel®
Architecture Core™ based processor, such as a Quark™, an Atom™, an i3, an i5, an i7, or MCU-class processors, or another such processor available from Intel® Corporation, Santa Clara, CA. However, other low power processors may be used, such as available from Advanced Micro Devices, Inc. (AMD) of Sunnyvale, CA, a MlPS-based design from MIPS Technologies, Inc. of Sunnyvale, CA, an ARM-based design licensed from ARM Holdings, Ltd. or customer thereof, or their licensees or adopters. These processors may include units such as an A5/A6 processor from Apple® Inc., a Snapdragon™ processor from Qualcomm® Technologies, Inc., or an OMAP™ processor from Texas Instruments, Inc.
[0037] The processor 202 may communicate with a system memory 204. Any number of memory devices may be used to provide for a given amount of system memory. As examples, the memory can be random access memory (RAM) in accordance with a Joint Electron Devices Engineering Council (JEDEC) low power double data rate (LPDDR)-based design such as the current LPDDR2 standard according to JEDEC JESD 209-2E (published April 2009), or a next generation LPDDR standard to be referred to as LPDDR3 or LPDDR4 that will offer extensions to LPDDR2 to increase bandwidth. In various implementations the individual memory devices may be of any number of different package types such as single die package (SDP), dual die package (DDP) or quad die package (Q17P). These devices, in some embodiments, may be directly soldered onto a motherboard to provide a lower profile solution, while in other embodiments the devices are configured as one or more memory modules that in turn couple to the motherboard by a given connector. Any number of other memory implementations may be used, such as other types of memory modules, e.g., dual inline memory modules (DIMMs) of different varieties including but not limited to microDIMMs or MiniDIMMs. For example, a memory may be sized between 2GB and 16GB, and may be configured as a DDR3LM package or an LPDDR2 or LPDDR3 memory, which is soldered onto a motherboard via a ball grid array (BGA).
[0038] To provide for persistent storage of information such as data, applications, operating systems and so forth, a mass storage 206 may also couple to the processor 202. To enable a thinner and lighter system design the mass storage may be implemented via a solid state disk drive (SSDD). However, the mass storage may be implemented using a micro hard disk drive (HDD) in some loT devices 200. Further, any number of new technologies may be used for the mass storage 206 in addition to, or instead of, the technologies described, such resistance change memories, phase change memories, holographic memories, or chemical memories, among others. For example, the loT device 200 may incorporate the 3D XPOINT memories from Intel® and Micron®.
[0039] The components may communicate over a bus 208. The bus 208 may include any number of technologies, including industry standard architecture (ISA), extended ISA (EISA), peripheral component interconnect (PCI), peripheral component interconnect extended (PCIx), PCI express (PCIe), or any number of other technologies. The bus 208 may be a proprietary bus, for example, used in a SoC based system. Other bus systems may be used, such as the l2C interface, the SPI interfaces, and point to point interfaces, among others.
[0040] The bus 208 may couple the processor 202 to an interface 21 0 that is used to connect external devices. The external devices may include sensors 212, such as traffic sensors, radar speed detectors, cameras, flow sensors, temperature sensors, motion sensors, wind speed sensors, pressure sensors, barometric pressure sensors, and the like. The interface 210 may be used to connect the loT device 200 to actuators 214, such as traffic lights, strobe lights, valve actuators, lock solenoids, audible sound generators, visual warning devices, and the like.
[0041] While not shown, various input/output (I/O) devices may be present within, or connected to, the loT device 200. For example, a display may be included to show information, such as sensor readings or actuator position. An input device, such as a touch screen or keypad may be included to accept input.
[0042] The loT device 200 can communicate with a cloud 1 00 in a variety of manners, including wirelessly. In the embodiment shown in Fig. 2, various wireless modules, each of which can correspond to a radio configured for a particular wireless communication protocol, may be present. As seen in Fig. 2, a WLAN unit 21 6 may be used to implement Wi-Fi™ communications in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.1 1 standard. In addition, wireless wide area communications, e.g., according to a cellular or other wireless wide area protocol, can occur via a WWAN unit 218. The loT device 200 is not limited to these types of radio transceivers, but may include any number of other radio
communications equipment, such as transceivers compatible with the Bluetooth® standard as defined by the Bluetooth® special interest group, For example, the loT device 200 may communicate over a wireless personal area network (WPAN) according to the IEEE 802.15.4 standard, among others.
[0043] The loT device 200 may include a network interface controller 220 to communicate with the cloud 1 00 through an Ethernet interface. This may include communicating through a small wired or wireless network shared by number of loT devices 200 that communicate with the cloud 1 00 through an loT gateway 1 1 8, as described with respect to Fig. 1 . For example, the loT device 200 may be part of an ad-hoc or mesh network in which a number of devices pass communications directly between each other, for example, following the optimized link state routing (OLSR) Protocol, or the better approach to mobile ad-hoc networking (B.A.T.M.A.N.), among others. The mesh network may communicate with the cloud, for example, through an loT gateway 1 18.
[0044] The loT device 200 may be powered by a local power source, such as a battery 222. The local power source may include any number of other units in addition to, or instead of the battery 222, such as solar cells or wind generators to charge the battery 222, among others.
[0045] The mass storage 206 may include a number of modules to implement the data transfer functions described herein. These modules may include a data transfer controller 224 that controls the data transfer from the loT device 200 to a coordinator or server in the cloud 1 00. The data transfer controller 224 may store data that cannot be sent due to network congestion. Further, the data transfer controller 224 may work with a system controller (not shown) to adjust the rate at which data is collected from the sensors 21 2, for example, depending on available storage space.
[0046] A backpressure monitor 226 may determine backpressure in the cloud, for example, as determined using the tracer techniques described with respect to Fig. 6. In the case of an loT device 200 the backpressure monitor 226 may be configured to receive backpressure alerts, e.g., messages, from backpressure monitors in an loT gateway, in the cloud 100, or both. The backpressure monitor 226 may instruct the data transfer controller 224 to adjust the rate at which data, e.g., messages with a sensor reading and a timestamp, are sent out to the cloud 1 00.
[0047] A data store 228 may be used as a local buffer to hold messages that cannot be sent immediately due to network congestion in the cloud 100. The data store 228 may be used by the data transfer controller 230. In some embodiments, messages may be constructed and stored directly in the data store 228, then sent from there under the control of the data transfer controller 224.
[0048] A data backlog transfer controller 230 may transfer messages that have built up in the data store 228 during a network capacity issue. For example, instead of trying to send backlogged messages immediately upon restoration of
communications, the data backlog transfer controller 230 may incrementally send the messages using a number of algorithms. These may include a last in-first out (LIFO) algorithm, a first in-first out (FIFO) algorithm, or a random sampling algorithm.
[0049] Fig. 3 is a block diagram of an loT gateway 300 that may be used to collect and send messages from a number of loT devices. Like numbered items are as described with respect to Fig. 2. It can be understood that the loT gateway 300 is not limited to the units shown, but may include any number of additional systems, including, for examples, sensors and actuators, WWAN systems, and the like.
[0050] The loT gateway 300 may function as an enhanced dispatch system. For example, the loT gateway 300 may use the techniques described herein to monitor cloud or network capacity issues. Further, the control algorithms that control caching decisions and polling decisions may be made in the loT gateway 300.
[0051] As for the loT device 200 of Fig. 2, the loT gateway 300 may include any combinations of the components. The components may be implemented as ICs, portions thereof, discrete electronic devices, or other modules, logic, hardware, software, firmware, or a combination thereof adapted in the loT gateway 300, or as components otherwise incorporated within a chassis of a larger system. The block diagram of FIG. 3 is intended to show a high level view of components of the loT gateway 300. However, some of the components shown may be omitted, additional components may be present, and different arrangement of the components shown may occur in other implementations. Further, any of the units used may be the same or different from the units used in the loT device 200 of Fig. 2.
[0052] While not shown, various input/output (I/O) devices may be present within, or connected to, the loT gateway 300. For example, a display may be included to show information, such as the status of loT devices 200 in communication with the gateway. An input device, such as a touch screen or keypad may be included to accept input.
[0053] The loT gateway 300 can communicate with a number of loT devices 200 in a variety of manners, including wirelessly. In the embodiment shown in Fig. 3, a wireless 302 module is used to communicate with the loT devices 200. The wireless 302 module may include a WLAN radio, or a Bluetooth radio, among others. For example, the loT gateway 300 may communicate with the loT devices 200 over a wireless personal area network (WPAN) according to the IEEE 802.15.4 standard, among others.
[0054] The loT gateway 300 may include a network interface controller 304 to communicate with the cloud 1 00 through an Ethernet interface. The loT gateway 300 may be part of an ad-hoc or mesh network in which a number of devices pass communications directly between each other, for example, following the optimized link state routing (OLSR) Protocol, or the better approach to mobile ad-hoc networking (B.A.T.M.A.N.), among others. The mesh network could then
communicate with devices in the cloud 1 00 through the loT gateway 300.
[0055] The loT gateway 300 may be powered by a local power source, such as a battery 306. The local power source may include any number of other units in addition to, or instead of the battery 306, such as line connected power supply or charger 308, solar cells, or wind generators to charge the battery 306, among others.
[0056] The mass storage 206 may include a number of modules to implement the data transfer functions described herein. These modules may include a data transfer controller 31 0 that controls the data transfer to a coordinator or server in the cloud 100. The data transfer controller 310 may store data from the sensors 21 2 and the loT devices 200 that cannot be sent due to network congestion. Further, the data transfer controller 31 0 may instruct the loT devices 200 to adjust the rate at which they send data to the loT gateway 300 or the rate at which data is collected from the sensors 212, for example, depending on available storage space in the loT gateway 300 versus the available storage space in the loT devices 200.
[0057] A backpressure monitor such as a tracer controller 312 may determine backpressure in the cloud, for example, as determined using the tracer techniques described with respect to Fig. 6. The tracer controller 312 may be configured to receive backpressure alerts, e.g., messages, from backpressure monitors in the cloud 100. The tracer controller 312 may instruct the data transfer controller 310 to adjust the rate at which data, e.g., messages with a sensor reading and a timestamp, is sent out to the cloud 100.
[0058] A data store 314, or message cache, may be used as a local buffer to hold messages from the loT devices 200 or sensor readings that cannot be sent immediately due to network congestion in the cloud 100. The data store 314 may be used by the data transfer controller 31 0. In some embodiments. The data store 314 may be implemented using a lightweight database approach, e.g., SQLite, where each newly cached message is associated with an index and timestamp. The index increments when a message is pushed onto the cache. An example of a timestamp is UNIX epoch time. The timestamp may be a 10-digit UNIX epoch time
representation for resolution in seconds or a 13-digit UNIX epoch timestamp for millisecond resolution.
[0059] A data backlog transfer controller 31 6 may transfer messages that have built up in the data store 314 during a network capacity issue. For example, instead of trying to send backlogged messages immediately upon restoration of
communications, the data backlog transfer controller 316 may incrementally send the messages using a number of algorithms. These may include a last in-first out (LIFO) algorithm, a first in-first out (FIFO) algorithm, or a random sampling algorithm.
Further, the data backlog transfer controller 316 can be augmented to prioritize messages with higher entropy. Entropy may include the most recent observations being deemed more valuable than older ones.
[0060] The loT gateway 300 may have fewer functional units than shown in Fig. 3, for example, if part of the functionality is implemented virtually. In this type of implementation, the loT gateway 300 may be a general device, for example, that has an amount of memory, such as 200 Mb, set aside for the operation of a virtual machine (VM). The amount of RAM set aside for the virtual machine may be scaled based on the functions given to the VM. This may allow the use of more general computing devices for the loT gateway 300, and the loT devices 200, since the design of the virtual machine may not depend on the underlying hardware, and only the hardware interface for the VM may be unique to an loT gateway 300. Accordingly, the VM may be implemented across a number of platforms without extensive modifications.
[0061] The virtual machine may include functional units similar to units 310-316 used to implement the backpressure system. This may include a data store for holding data from other loT devices 200 and sensor 214, a data transfer controller for interacting with units in the cloud, including protocol conversion and data transfer functions among others. A unit in the VM similar to the tracer controller may be used to determine the back pressure in the cloud. A backlog transfer controller in the VM can implement the functions described herein for sending data that has been backlogged, for example, due to backpressure in the cloud.
[0062] The virtual machine may also be used for implementing virtual sensors. These sensors may use data from real sensors to implement sensors that provide calculated values. For example, a virtual dew point sensor may use measurements from a temperature sensor and a pressure sensor to calculate a measurement for the dew point. Other virtual sensors that may be implemented include testing and validation of other sensors, among others.
[0063] The backpressure measurement system itself may be implemented as a virtual sensor, for example, in a virtual machine in the loT gateway 300, an loT device 200, or in another unit, for example, in the cloud. In these embodiments, the backpressure measurement may be treated as a sensor reading that is read from the virtual backpressure sensor. The backpressure measurement may then be used to control the data transfer, as described herein. Accordingly, the collection and use of the backpressure measurement may be integrated into the system without implementing any messaging system, additional communications system, or protocols.
[0064] Fig. 4 is a block diagram of an example of an loT deployment with backpressure control residing completed in the cloud 100. Like numbered items are as described with respect to Figs. 1 and 3. In this example, the cloud 100 includes a router 402, a message bus 404, a pipeline processing application 406, and a storage system 408. The pipeline processing application 406 and the storage system 408 may be part of a server 104. [0065] The numbers below are provided for a specific example to clarify the techniques. However, this is merely one example of many possible configurations. In this example, it may be assumed that there are 20,000 loT gateways 300 distributed across a city. Each of the loT gateways 300 has 10 sensors attached, e.g., directly to a sensor interface or as part of other loT devices. The loT gateways 300 may send one data observation from each of their 10 sensors on a fixed or event driven time interval. The average message size sent from each loT gateway 300 in this configuration may be 3.5Kb. Each loT gateway 300 has an 8GB SD card, of which about 6GB is available once the operating system and applications are installed.
[0066] The data router 402 in the cloud 100 has two nodes, each with about 40GB of local storage which is used as a message buffer. The message bus 404 in the cloud has two nodes with about 40GB of local storage which is used as a message buffer.
[0067] The pipeline processing application 406 has two nodes, with no
requirement to cache messages. The pipeline application, e.g., data processing application, running on them consumes messages from the message bus 404, processes the messages and stores the data in the storage system 408. If the storage system 408 is down, backpressure messages 410 may be used to stop messages from the message bus 404, wherein the messages may be buffered in the message bus 404. If the message bus 404 is down, the messages queue up in the data router 402.
[0068] In this example, the storage system 408 has a distributed database cluster across seven nodes, wherein each instance has about 1 0TB of storage making a total of about 70TB. The entire system has a message buffering capacity of about 120,160GB (20,000 x 6GB + 2x 40GB + 2 x 40GB). However, only about 0.15% of this capacity is in the cloud.
[0069] A system without the techniques described herein cannot take advantage of the resources that are not in the cloud 1 00. Thus, it may only be able to respond to outages and congestion by buffering messages at an appropriate point in the pipeline. Further, it may be limited to enabling auto-scaling on the buffering components and dealing with the complexity of scaling services simply in order to queue up data until normal service resumes.
[0070] In contrast, a system using the techniques described herein, may respond to congestion messages which may come from the cloud, from the network itself, or from peers allowing the loT gateways 300, and loT devices 102, to use local resources to queue up messages at their source, or poll sensors less frequently to reduce the rate at which new data is being generated, or both.
[0071] The techniques described herein binds the two domains, enabling backpressure mechanisms that may exist in the cloud, or elsewhere, such as in the network or on peer devices, to be detected. These can be used to change the operation of edge devices that are closer to the true source of the data arriving to the cloud. Backpressure approaches may be extended to the edge devices using the messages that control the flow of data in the cloud.
[0072] Further, the backpressure detector may be implemented in the data router 402, or the message bus 404, for example, as a virtual machine (VM). In this embodiment, the backpressure detection may be implemented as a virtual sensor in the VM that may be read by other units, such as loT gateways 300 and loT devices 200 for backpressure control of data transfer.
[0073] In some embodiments, the loT gateway 300 may be implemented in the data router 402 or the message bus 404 as a VM. In these embodiments, the data from the loT devices 200 flows to the virtual loT gateway for transfer to other units in the cloud. The virtual loT gateway may implement other types of virtual sensors, for example, calculated values based on sensor readings from loT devices 200.
[0074] Fig. 5 is a data processing pipeline in the cloud 100 with backpressure detection extended to an loT gateway 300. Like numbered items are as described with respect to Figs. 1 , 3, and 4. In this example, backpressure messages 410 may sent from the pipeline processing application 406 to all units along the data pipeline, including the data router 402 coupled to the loT gateway 300. Further, backpressure messages 502 may be sent from the data router 402 to the loT gateway 300 outside of the cloud to enable local control of data generation and message transmission rates, allowing local caching of messages. [0075] The ΙοΤ gateways 300 may perform a number of functions. They may act as a data source as they directly poll sensors, or act as data aggregation points or entry points for loT devices sending data through the network. The loT gateways 300 may host the message dispatch and replay systems, and take actions in response to backpressure messages 502 from the cloud.
[0076] The data router 402 enables a bi-directional edge, e.g., from an loT gateway 300, to cloud communication. In one embodiment, a multi-protocol cloud gateway (MPCG) may act as the data router, enabling a number of protocols, such as message queuing telemetry transport (MQTT) and representational state transfer (REST).
[0077] The message bus 404 may be a publish/subscribe broker. In one embodiment, Apache Kafka from the Apache Software Foundation performs this function. Data flows into the message bus 404 and is consumed from it by pipeline applications.
[0078] The pipeline processing application 406 stores the data, performs data analysis, and calculates some statistical information such as message throughput rates. It may also generate actuation messages and detects congestion in the pipeline. In one embodiment, Akka from Typesafe Inc. hosts this functionality. The pipeline processing components can detect the presence of two types of conditions, backpressure resulting from one or more pipeline components being unavailable and backpressure resulting from a constraint of one or more pipeline components.
[0079] The storage system 408 may be implemented with any number of server or cloud storage systems. In one embodiment, the storage system 408 may be implemented with OpenTSDB API on top of Cloudera. OpenTSDB implements Telnet and REST interfaces.
[0080] Fig. 6 is a schematic diagram of a backpressure detection system using tracer messages to measure system congestion. Like numbered items are as described with respect to Figs. 1 and 4. To begin, the pipeline processing application 406 sends a batch of tracer messages 602-606, one to each of the 1 to n cloud components. A tracer is a special message whose contents and frequency of dispatch are known. [0081] The tracer messages 602-606 make their way through each component of the pipeline. For example, tracer message 602 sent to the data router 402 is forwarded on to the message bus 404 as tracer message 608. From the message bus 404, both tracer messages 608 and 604 are forwarded, e.g., returned, to the pipeline processing application 406 as tracer message 610. A tracer message 606 sent to the storage system 408 is returned as tracer message 602. The pipeline processing application 406 may monitor for returned tracer messages 61 0 and 61 2, or responses, may be stored as indicated by line 614 as any other message, e.g., in a store of responses. Thus, the stored messages can be queried. The absence of one or more messages indicates that a pipeline component may be down.
[0082] Additionally, the time delay between sent tracer messages and returned tracer messages, or responses, allows a determination of the level of congestion in the pipeline. We calculate the congestion level, c, as being the smaller of either the throughput congestion level, tc, or the buffer congestion level, be. These values may be determined by sending batches of tracer messages ml to mn to cloud
components 1 to A? at fixed time intervals, tO, t1, t2, and so on.
[0083] If a component has failed and is unresponsive, sending the tracer message to that component will fail, throwing an exception. It may therefore be assumed that the component is down. Accordingly, c is set to 0 and an alert is sent. Otherwise, all tracer messages get successfully sent.
[0084] At a second time tO', tV, ?2' (the interval is configurable) a query can be submitted for the tracer messages. Missing tracer messages indicate one or more components are down or are severely constrained. If tracer message ml and m2 are not received after a configurable period of time, but m3 to mn are, then we know that component 1 , 2, or both, has an issue and c is set to 0 as the pipeline has a serious service availability issue. For each tracer message, the time difference between sending it and the time it was stored is calculated. We also calculate the relative time differences between each tracer message.
[0085] The results of these calculations provide an independent system which is capable of quantifying the performance of each pipeline component without relying on either component or implementation specific. Table 1 shows the results that may be obtained from the tracer messages. [0086] Table 1 : Tracer message measurements of network congestion.
Figure imgf000019_0001
[0087] The tracer message process is repeated for batch 2, 3, and so on, maintaining two counts, a sliding time window with averages for if and to values, which provide the real-time current performance. A second count is an all-time average for if and to values, which provides the baseline performance. The current performance is compared to the baseline performance to calculate the throughput congestion rate, tc, for the overall pipeline and for each pipeline component where: tc = current/baseline
(if current> baseline, then tc = 1 ; tc cannot be > 1 or < 0)
[0088] Buffer congestion, be, is then calculated for components of the pipeline capable of buffering messages. In general, the buffer congestion metric can be expressed as follows:
|" j _ (1' tf 710 buffer congestion is present
≥ 0, otherwise where 0 < bc[n]≤ 1.
[0089] Specifically, we determine the buffer congestion metric from the amount of free disk space, message rate, size of messages, and the number of seconds required to fill the buffer. The number of seconds, n, required to fill the buffer is calculated as follows: df 771,
ns = s
TTlfe 60
where df is the current free disk space total in kB, mk, denotes the average message size in kB, and ms, denotes the current message per second rate as determined from the processing pipeline. We calculate buffer congestion, bc[n], as follows:
1, if dp≥ Pthresh
bcn, if dp≤ Pthresh ' where dp denotes the free disk space percentage on the cloud components, Pthresh is a configurable free disk space threshold, e.g. 50%, and bcn, is calculated as follows: be =— where ^τη ms
"-max - mk · 60 :
and dmax denotes the maximum disk space available to the system.
[0090] The lowest value of c in the pipeline indicates which component is most constrained. Such a data processing pipeline performs only as well as its slowest component. If the value of c has changed significantly, then it may be sent to the loT gateways as an alert, for example, in a message. In the sample JavaScript Object Notation (JSON) message below, the congestion value is 0.61 12:
{
"msg_type": "congest_alert ",
"account_id": "alldevices",
"senderjd": " 001320FDFFED ",
"timestamp": "1434054270",
"data_source": [ "name": "eventalert",
"metrics": [
{
"name": "congestion-alert",
"sample": [
{
"timestamp": "1434054270",
"value": "0.61 12"
}
]
Figure imgf000021_0001
[0091] Once the congestion alert is received by the loT gateways, they can adjust the rates at which they are polling sensors, e.g., generating new data, and the rates at which they are sending data to the cloud. Similarly, an loT gateway can send a message to any loT devices using the loT gateway as a connection to the cloud instructing the loT devices to adjust sending rates or data collection rates. In the example above, the loT gateways may slow the rate at which they are sending data to the cloud until the congestion rate recovers closer to one. The back pressure alerts may also be used in the cloud to allow messages to queue up in appropriate components, such as in the message bus if a later component has failed or is congested.
[0092] Fig. 7 is a process flow diagram of method 700 for an enhanced message dispatch from an edge device. The method 700 begins at block 702 when the system is started and placed in communications with a cloud.
[0093] At block 704, sensors and/or sensing nodes are polled on a schedule.
The data gathered from the sensing nodes results in name-value observations being written to files in a specified directory by the sensor application.
[0094] At block 706, the specified directory is monitored. This is performed to check if a sensor data file has been created or updated within the monitored directory. At block 708, a determination is made as to whether new sensor data is present.
[0095] If so, at block 710, the sensor data file is opened and the name-value pair string information is parsed. Following parsing, a JSON payload is created in preparation for dispatch to the destination. Details of the filename and timestamp are inserted as metadata into the processing queue. The message is pushed onto a queue buffer in readiness for dispatch to the destination. The publisher pops a message from the queue.
[0096] At block 712, a determination is made as to whether a backpressure alert has been received. If so, and a backpressure condition exists, the message will not be sent. It remains in the queue, and process flow proceeds to block 714.
[0097] At block 714, the polling interval is adjusted. The polling interval is initialized as follows:
Pi = max(r, b) , where /" denotes the current rate and b denotes the backpressure rate. The backpressure rate is the rate adjusted for the current congestion, c, which may be calculated as c x r. The polling interval, p„ may then be optimized as follows:
Figure imgf000022_0001
where A7¾ denotes the message size expressed in kB, ddenotes the amount of free disk space on the edge device expressed in kB, /- denotes the current messaging rate, and b denotes the backpressure rate.
[0098] If at block 71 2, no backpressure conditions are detected, then process flow proceeds to block 71 6. At block 716, the message 718 is dispatched to the destination.
[0099] At block 720, a determination is made as to whether the message was successfully dispatched. Is so, process flow proceeds to block 722. At block 722, the message metadata, e.g., the filename and timestamp, is extracted. Using the metadata information, the original sensor message file is moved from the monitored directory to a directory for processed information.
[0100] If at block 720, it is determined that the message was not successfully dispatched, it remains in the monitored directory, e.g., on the backlog, for replay at a later stage, for example, using the method 800 of Fig. 8. Process flow then returns to block 706.
[0101] Fig. 8 is a process flow diagram of a method 800 for replaying messages that have not been successfully sent to a destination. In the method 800, the backlog is analyzed and a dispatch or replay rate, r, is calculated such that the overall flow of messages to the cloud system is reduced if the cloud is in a backpressure state or is increased if the cloud is not constrained. The method 800 begins at block 802 when it is detected that a message has not been successfully dispatched.
[0102] At block 804, a backpressure status is checked by checking if a
backpressure alert is present. At block 806, the loT gateway or device requests the backpressure alert if not present. If a backpressure alert message has been recently received, then there may be no need to contact the cloud. The period can be configured. The communication to obtain the alert may be an MQTT subscription, a REST, or web socket call, among others.
[0103] If there is an updated backpressure alert, at block 808 the updated replay rate, r may be calculated. The mode of operation may be determined from the replay rate value. During normal operation, r == 1 , if r < 1 , then a congestion scenario has occurred, and when r > 1 , the system is in replay mode. The general message dispatch frequency, , is a configurable constant, for example it may be once per minute. The replay rate may be calculated as follows: r' = r · f where r' denotes the new replay rate and f denotes the message dispatch frequency.
[0104] At block 810, a determination is made as to whether the reply rate > 0. If so, then messages will be attempted to be sent and process flow proceeds to block 812. At block 81 2 an entropy analysis may be performed on the cached messages to determine which ones should be replayed. For example, the messages may be sorted in a LIFO queue (last in, first out) so that the newest observations are sent first. This may be important as recent observations may have higher entropy than older messages, e.g., having more importance to the current state. Optionally, the LIFO queue may then be further sorted based on an entropy analysis. This may be performed on the cached messages to determine which ones should be replayed. An example of an analysis process is to calculate observations which are outside the normal ranges either in terms of the value seen, or the metric, or the frequency that those value ranges or metrics names are seen. Less frequently occurring ranges or metric names have potentially higher entropy, e.g., information value.
[0105] At block 814, messages are pushed onto the message dispatch system processing queue. At block 816 the messages are sent to the cloud, for example, using the message dispatch method of Fig. 7.
[0106] At block 818, a determination is made as to whether the backlog is empty, e.g., all remaining cached messages have been successfully dispatched. If so, process flow ends at block 820. If not, process flow returns to block 804 to continue the method 800. If further network connectivity outages occur during the replay process, the replay mechanism will also end and return to the network connectivity monitoring state.
[0107] An example congestion message is shown below for illustrative purposes, the congestion value is 0.61 12. This message could be in any format from any source as long as it contains a numerical value for the congestion level. In a basic implementation, the value could simply be 0 to indicate there is congestion present or 1 to indicate that there is no congestion. In a more sophisticated system the congestion level may be calculated in a specific way and may be representative of a level of congestion which would enable more fine grained decisions to be taken on the loT gateway:
{
"msg_type": "congest_alert ", "account_id": "alldevices", "sender id": " 001320FDFFED ", "timestamp": "1434054270", "data_source": [
{ "name": "eventalert", "metrics": [
{
"name": "congestion-alert", "sample": [
{
"timestamp": "1434054270", "value": "0.61 12"
}
]
}
]
}
]
}
[0108] This provides a technical solution for orchestrating how loT gateways dispatch data to a backend data pipeline system. It provides fine-grain support for backoff delays and messaging strategies, e.g., latest message first, oldest message first, or sampled messages. loT gateway messaging orchestration is driven by the backend pipeline system and can operate on a per-gateway in addition to all- gateway basis.
[0109] Fig. 9 is a schematic diagram of an loT system 900 in which the cloud- based data processing pipeline 902 is able to orchestrate how the cached messages are replayed. Three examples are depicted, first in-first out (FIFO), last in-first out (LIFO), and random message selection. In Fig. 9, multiple loT endpoints, e.g., sensors 904 in this example, are connected to loT gateways 906-910. The loT gateways 906-910 in turn are connected to the cloud-based data processing pipeline 902.
[0110] Each of the loT gateways 906-910 has a message cache 912-916 of varying sizes. These cached messages may be due to temporary network outages which prevented the normal dispatch of sensor messages and had to be stored on the loT gateway 906, 908, or 910 until network connectivity was restored. [0111] Normally, upon the restoration of network connectivity, the loT gateways 906-910 would commence replaying the cached messages beginning with the oldest message in the cache and progressing to the latest cached message until the cache was exhausted. In addition, a normal objective may be to replay these cached messages as quickly as possible. However, this can present problems for the cloud- based data processing pipeline 902, e.g., a data deluge resulting in large processing load spikes, congestion, and high network traffic loads.
[0112] In the techniques described herein, the cloud-based data processing pipeline 902 may orchestrate how the cached gateway messages are replayed. Three systems may be used, with different loT gateways 906, 908 or 910 instructed to send messages by different methods. For example, a first loT gateway 906 may be instructed to replay messages from the message cache 912 as first in-first out (FIFO). This is the default behavior, as the endpoint messages are replayed in the same time-order that they were cached.
[0113] A second loT gateway 908 may be instructed to replay messages from the message cache 914 as last in-first out (LIFO). This may be used for time-sensitive cached messages, such as control systems used for pipelines, traffic, and the like. Upon network connectivity restoration, the latest messages are replayed first in order to minimize the impact on time-sensitive loT applications.
[0114] A third loT gateway 910 may be instructed to replay messages from the message cache 91 6 by a random message selection and dispatch (sampled). As the number of cached messages can extend to several thousand, this technique may provide a more accurate picture of the period during which data was lost. This strategy enables time-sampled messages to be replayed in order to provide backend applications with sufficient data points to develop a summarized analysis over the period affected by the network outage. As the replay strategy progresses, the intermediate messages are then replayed to eventually backfill the entire time period.
[0115] In all replay strategies, the intervals between message replay events can be configured by the cloud-based data processing pipeline 902. This is especially useful for minimizing the potential for large processing workload spikes due to data deluges. The replay rate can be finely-tuned on a per loT gateway if necessary. [0116] Additional modes and variations of these three example modes may be supported by this system. The cloud-based data processing pipeline 902 can configure the loT gateway messaging strategy using two methods, by broadcasting a global control message to every connected gateway for a blanket messaging strategy change, or by sending a targeted dispatch of a control message to an loT gateway 906, 908, or 910. The control messages may not be protocol-specific. In examples the message may include a JavaScript Object Notation (JSON) message, an MQTT topic or payload, or a REST message, such as an HTTP POST, among others.
[0117] This may be further explained through an example describing the data storage and flows. As for the previous example, it may be understood that the numbers used are merely representative of a single case. In this example, 10,000 loT gateways may be distributed across a large urban and suburban area. Each gateway may responsible for ten loT endpoints, such as sensors or loT devices. The loT gateways dispatch one observation message from each of the ten endpoints per minute resulting in 600 messages per hour. In this example, the average message size sent from each gateway may be about 3 kB. The total number of messages per hour for the entire deployment is about 6 million, and the total size of the entire messaging workload is about 17.16 GB / hour.
[0118] If a network connectivity outage affects 10% of the gateways for a 2 hour period, the 1 000 gateways involved must each cache their 600 messages / hour for this 2 hour period until connectivity is restored. In total, 12 million messages have been cached on gateways representing about 3.43 GB.
[0119] Following restoration of network connectivity, the total size of the messaging payload may temporarily increase to about 20.59 GB if the cached messages are all replayed within an hour period following the restoration of network connectivity. This represents a 20% increase in backend data pipeline processing workload.
[0120] However, if the data processing pipeline orchestrates the replay procedure using a combination of sampled data, e.g., instructing the loT gateways involved to take every 10th measurement, back-off sending replayed messages by a factor of ten, and using LIFO for time-critical applications, the increase in backend data pipeline processing workload will be about 2%. Thus, the extra workload is reduced by a factor of ten.
[0121] Fig. 10 is a process flow diagram of a method for orchestrating messages. The method starts at block 1002, for example, when an loT gateway is powered. At block 1004, communications between the loT gateway and backend data processing pipeline is established. At block 1006, the gateway commences the dispatch of messages, if endpoint messages are pending.
[0122] At block 1008, the loT gateway checks for downstream configuration messages from the backend. At block 1010, a determination is made as to whether a mode change requested has been received. If not, process flow returns to block 1006 to continue with message dispatching.
[0123] If a backend request has been received, process flow proceeds to block 1012, where the message is parsed. At block 1014, a determination is made as to whether the LIFO mode is selected. If so, the LIFO mode is configured at block 1016. Process flow then returns to block 1 006.
[0124] At block 1014, a determination is made as to whether the LIFO mode is selected. If so, the LIFO mode is configured at block 101 6. Process flow then returns to block 1006.
[0125] At block 101 8, a determination is made as to whether the sampled mode is selected. If so, the sampled mode is configured at block 1 020. Process flow then returns to block 1006.
[0126] If no other mode is selected, the FIFO mode is selected at block 1022. The FIFO mode is then configured at block 1 024. Process flow is then returned to block 1006.
[0127] Examples of each of these three modes are provided in the following figures. The examples include a backend to gateway control message in JSON format containing replay strategy instructions. In each example, the salient information in contained in the value field of the message where both the desired mode of operation and interval expressed in seconds between replay events is stated. In these example cases, the modes are FIFO, LIFO, and SAMPLED with replay intervals of 12 seconds. [0128] Fig. 1 1 is a schematic drawing of a FIFO buffer, showing the addition of messages to the queue 1 100 and the removal of messages from the queue 1 100. In this schematic, time 1 1 02 is progressing upwards. Thus, newly created messages 1 104 are added to the top of the queue 1 100, while older messages 1 1 06 are dispatched from the bottom of the queue 1 100.
[0129] A JSON message that may be used to activate this behavior is shown below:
"msg_type":"replay_config ",
"account_id":"allgateways",
"sender_id":"DEADBEEFCAFE",
"timestamp":"1435034142",
"data_source":[
{
"name":"replay-modification",
"metrics":[
{
"name":"mode",
"value":[
{
"mode":"FIFO",
"interval":"1 2"
}
]
}
]
}
] [0130] Fig. 12 is a process flow of a method 1200 for sending data from an loT gateway using a FIFO buffer. The method 1 200 starts at block 1202, when a FIFO mode has been selected, and the buffer includes messages that have not been successfully dispatched. At block 1204, the method 1200 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent. In this example, the SQLite database is used, although any small footprint databases may be used.
[0131] When a replay event is triggered, at block 1206, the index of the selected message is obtained using a SELECT statement. For a FIFO operation, the message replay operation selects the oldest message on the queue, e.g., having MAX(index) or message associated with the maximum index of the rows. At block 1208, the message is dispatched. At block 1210, a determination is made as to whether the send was successful. If not, process flow returns to block 1204 to wait for the next replay event.
[0132] If the dispatch was determined to be successful at block 1 210, process flow proceeds to block 1212. At block 121 2, the successfully dispatched message is removed from the cache, and process flow returns to block 1204 to wait for the next replay event.
[0133] In the next replay event, the next oldest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
[0134] Fig. 13 is a schematic drawing of a LIFO buffer, showing the addition of messages to the queue 1 300 and the removal of messages from the queue 1300. In this schematic, time 1302 is progressing upwards. Thus, newly created messages 1304 are added to the bottom of the queue 1 300, shifting older messages up. The younger messages 1 306 are also dispatched from bottom of the queue 1300 in preference to older messages. In this way, time critical messages may be sent and received in preference to older, possibly less relevant, messages.
[0135] A JSON message that may be used to activate this behavior is shown below: {
"msg_type":"replay_config ",
"account_id":"allgateways",
"sender_id":"DEADBEEFCAFE",
"timestamp":"1435034142",
"data_source":[
{
"name":"replay-modification",
"metrics":[
{
"name":"mode",
"value":[
{
"mode":"LIFO",
"interval":" 12"
}
]
}
]
}
]
}
[0136] Fig. 14 is a process flow of a method 1400 for sending data from an loT gateway using a LIFO buffer. The method 1400 starts at block 1402, when a LIFO mode has been selected, and the buffer includes messages that have not been successfully dispatched. At block 1404, the method 1400 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent. As for the FIFO method, the SQLite database is used, although any small footprint databases may be used. [0137] When a replay event is triggered, at block 1406, the index of the selected message is obtained using a SELECT statement. For a LIFO operation, the message replay operation selects the oldest message on the queue, e.g., having MIN(index), or the message associated with the minimum index of the rows. At block 1408, the message is dispatched. At block 1410, a determination is made as to whether the send was successful. If not, process flow returns to block 1404 to wait for the next replay event.
[0138] If the dispatch was determined to be successful at block 1410, process flow proceeds to block 1412. At block 141 2, the successfully dispatched message is removed from the cache, and process flow returns to block 1404 to wait for the next replay event.
[0139] In the next replay event, the next youngest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
[0140] Fig. 15 is a schematic drawing of a sampled buffer, showing the addition of messages to the queue 1 500 and the removal of messages from the queue 1500. In this schematic, time 1502 is progressing upwards. Newly created messages 1504 are added to the bottom of the queue 1500, shifting older messages up, but the newly created messages may be added to either end of the queue 1500. A random sampling technique is used to select messages 1506 from the queue 1500 for dispatch. In this way, the back end processing application may interpolate, or otherwise predict values, between readings. As more readings arrive, the
predictions become more accurate, until they have caught up to the current values.
[0141] A JSON message that may be used to activate this behavior is shown below:
{
"msg_type":"replay_config ",
"account_id":"allgateways",
"sender_id":"DEADBEEFCAFE", "timestamp":"1435034142",
"data_source":[
{
"name":"replay-modification",
"metrics":[
{
"name":"mode",
"value":[
{
"mode":"SAMPLED",
"interval":" 12"
}
]
}
]
}
]
[0142] Fig. 16 is a process flow of a method 1600 for sending data from an loT gateway using a sampled buffer. The method 1600 starts at block 1 602, when a sampling mode has been selected, and the buffer includes messages that have not been successfully dispatched. At block 1604, the method 1600 pauses to wait for the next replay event, e.g., when congestion has dropped indicating that stored messages may be sent. As for the methods above, the SQLite database may be used, although any small footprint databases may be used.
[0143] When a replay event is triggered, at block 1606, the youngest and oldest messages may first be dispatched to bracket the measurement set. A random number is generated, wherein the random number is bounded by the MIN and MAX values of the cache range. At block 1 608, the index of the selected message is obtained using a SELECT statement. For a sampling operation, the message replay operation selects the message on the queue having the index of the random. At block 1610, the message is dispatched. At block 1612, a determination is made as to whether the send was successful. If not, process flow returns to block 1604 to wait for the next replay event.
[0144] If the dispatch was determined to be successful at block 1 612, process flow proceeds to block 1614. At block 1614, the successfully dispatched message is removed from the cache, and process flow returns to block 1404 to wait for the next replay event.
[0145] In the next replay event, the next youngest message may then be selected, dispatched, and upon successful dispatch, removed from the database. The process continues until the cache has been exhausted or until another network connectivity outage occurs.
[0146] Fig. 17 is a block diagram of a non-transitory, computer readable medium 1700 that includes instructions to direct a processor 1 702 to manage
communications between loT gateways and devices and systems in the cloud. The processor 1702 can access the computer readable medium over a bus 1 704, for example, as described with respect to Figs. 2 and 3. The instructions may include a code block 1706 to direct the processor 1702 to check for network congestion in the cloud. This may include code that instructs the processor to check for congestion alerts from a system in the cloud. In some embodiments, it may include code that directs the processor 1702 to sends tracer messages to discover and measure network congestion. A code block 1 708 may direct the processor 1702 to dispatch messages to the cloud. This may include code to direct the processor 1702 to adjust the rates at which the messages are sent, the rates that data is collected, or both, depending on the amount of congestion in the cloud. Further, code may direct the processor 1702 to determine if the message was successfully dispatched, and remove the message from a cache. A code block 1 710 may direct the processor 1702 to calculate the rate at which to send the messages, based on the congestion measured in the cloud and sent by an alert. A code block 1712 may direct the processor 1702 to change the method that replayed messages are sent, e.g., FIFO, LIFO, or sampled. A code block 1714 may direct the processor 1702 to replay messages based on the network congestion, and the method selected.
[0147] Examples
[0148] Example 1 provides an apparatus for managing communication
congestion for internet of things (loT) devices, including a pipeline processing application. The pipeline processing application is configured to send tracer messages to each of a plurality of components in a cloud, determine a congestion level, c, by time differences between responses and the tracer messages, and generate backpressure alert messages. The apparatus includes an loT device that includes a data transfer controller configured to dispatch messages to the pipeline processing application in the cloud; and a backpressure monitor configured to accept the backpressure alert messages and adjust a dispatch of messages from the data transfer controller.
[0149] Example 2 includes the subject matter of Example 1 , wherein the responses include forwarded tracer messages.
[0150] Example 3 includes the subject matter of either of Examples 1 or 2, wherein the loT device includes an loT gateway coupled to a plurality of loT devices and wherein the loT gateway is configured to pass messages from the plurality of loT devices to the pipeline processing application.
[0151] Example 4 includes the subject matter of any of Examples 1 to 3, wherein the loT device includes an loT gateway coupled to a plurality of sensors.
[0152] Example 5 includes the subject matter of any of Examples 1 to 4, including a data router in the cloud interfaced to the loT device, wherein the data router is configured to send backpressure alert messages to the loT device.
[0153] Example 6 includes the subject matter of any of Examples 1 to 5, including a storage device, wherein the storage device includes a store of responses to the tracer messages, and wherein the store of responses is queried to determine time differences between messages.
[0154] Example 7 includes the subject matter of any of Examples 1 to 6, wherein the loT device includes a sensor configured to measure a parameter, and a network interface to dispatch a message including the parameter. [0155] Example 8 provides a method for measuring backpressure in a computing cloud. The method includes sending out tracer messages to a plurality of components in a cloud, monitoring for response messages from the plurality of components, storing received response messages in a storage system, and querying the response messages to determine network conditions in the cloud. An alert message is created to report network conditions to an internet of things (loT) device.
[0156] Example 9 includes the subject matter of Example 8, including identifying that a component has failed by a missing response message.
[0157] Example 10 includes the subject matter of either of Examples 8 or 9, including determining a time difference between sending a tracer message and storing a corresponding response message.
[0158] Example 1 1 includes the subject matter of any of Examples 8 to 1 0, including calculating a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud.
[0159] Example 12 includes the subject matter of any of Examples 8 to 1 1 , including setting c as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
[0160] Example 13 includes the subject matter of any of Examples 8 to 1 2, including calculating fc for a component as a ratio of a current time for a response divided by a baseline time for the response from the component.
[0161] Example 14 includes the subject matter of any of Examples 8 to 1 3, including calculating be from an amount of free disk space, a message rate, a size of messages, or a number of seconds required to fill a buffer, or any combinations thereof.
[0162] Example 15 includes the subject matter of any of Examples 8 to 14, including calculating be by calculating the number of seconds, n, required to fill a buffer using the following equation:
df m<- n, =— -.
ώ mk 60
In this equation, is a current free disk space total in kB, mk, denotes an average message size in kB, and ms, denotes a current message per second rate as determined from a data processing pipeline. A buffer congestion level, bc[n], is calculated using the following equation: 1, A if) dp ≥ Pthresh
if dp < Pthresh
In this equation, dp denotes a free disk space percentage on the cloud components, P resh is a configurable free disk space threshold, e.g. 50%. The term bcn is calculated using the following equation:
wherein:
n - max ~ mk 60 "
and dmax denotes the maximum disk space available to the system.
[0163] Example 16 includes the subject matter of any of Examples 8 to 1 5, including setting c to a lowest value determined for a component in a data processing pipeline.
[0164] Example 17 includes the subject matter of any of Examples 8 to 1 6, including generating an alert message including c.
[0165] Example 18 includes the subject matter of any of Examples 8 to 1 7, including generating a java script object notation (JSON) message including c.
[0166] Example 19 includes the subject matter of any of Examples 8 to 1 8, including sending the alert message to the loT device.
[0167] Example 20 includes the subject matter of any of Examples 8 to 1 9, including storing the alert message for access by the loT device.
[0168] Example 21 provides a non-transitory, computer readable medium including code to direct a processor to send out tracer messages to a plurality of components in a cloud, monitor for response messages from the plurality of components, store received response messages in a storage system, and query the response messages to determine network conditions in the cloud. Code is included to direct the processor to create an alert message to report network conditions to an internet of things (loT) device.
[0169] Example 22 includes the subject matter of Example 21 , including code to direct a processor to identify that a component has failed by a missing response message. [0170] Example 23 includes the subject matter of either of Examples 21 or 22, including code to direct a processor to calculate a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud, wherein c is set as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
[0171] Example 24 includes the subject matter of any of Examples 21 to 23, including code to direct a processor to calculate fc for a component as a ratio of a current time for a response divided by a baseline time for the response from the component.
[0172] Example 25 includes the subject matter of any of Examples 21 to 24, including code to direct a processor to calculate be from an amount of free disk space, a message rate, a size of messages, or a number of seconds required to fill a buffer, or any combinations thereof.
[0173] Example 26 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a pipeline processing application, wherein the pipeline processing application is configured to: send tracer messages to each of a plurality of components in a cloud; determine a congestion level, c, by time differences between responses and the tracer messages; and generate backpressure alert messages for an loT device.
[0174] Example 27 includes the subject matter of Example 26, wherein the responses include forwarded tracer messages.
[0175] Example 28 includes the subject matter of either of Examples 26 or 27, including an loT device. The loT device includes a data transfer controller configured to dispatch messages to the pipeline processing application in the cloud and a backpressure monitor configured to accept the backpressure alert messages and adjust a dispatch of messages from the data transfer controller.
[0176] Example 29 includes the subject matter of any of Examples 26 to 28, wherein the loT device includes an loT gateway coupled to a plurality of loT devices and wherein the loT gateway is configured to pass messages from the plurality of loT devices to the pipeline processing application. [0177] Example 30 includes the subject matter of any of Examples 26 to 29, including a data router in the cloud interfaced to an loT device, wherein the data router is configured to send backpressure alert messages to the loT device.
[0178] Example 31 includes the subject matter of any of Examples 26 to 30, including a storage device, wherein the storage device includes a store of responses to the tracer messages, and wherein the store of responses is queried to determine time differences between messages.
[0179] Example 32 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a pipeline processing application, wherein the pipeline processing application includes a means for determining a congestion level, c, in a cloud.
[0180] Example 33 includes the subject matter of Example 32, including an loT device, including means for adjusting a dispatch of messages based, at least in part, on the congestion level.
[0181] Example 34 includes the subject matter of Examples 32 or 33, wherein the loT device includes means for passing messages from a plurality of loT devices to the pipeline processing application.
[0182] Example 35 includes the subject matter of any of Examples 32 to 34, wherein the pipeline processing application comprises means for sending
backpressure alert messages to the loT device.
[0183] Example 36 provides an apparatus for managing communication congestion for internet of things (loT) devices. The apparatus includes an loT device that includes a data transfer controller configured to create sensor messages and dispatch the sensor messages to a pipeline processing application in a cloud. The loT device includes a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the data transfer controller, a polling interval for polling a sensor, or both. A data store is configured to buffer messages that cannot be sent due to communication issues.
[0184] Example 37 includes the subject matter of Example 36, wherein the backpressure alert messages include a congestion level, c. [0185] Example 38 includes the subject matter of either of Examples 36 or 37, wherein the loT device includes an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to pass messages from the number of loT devices to the pipeline processing application.
[0186] Example 39 includes the subject matter of any of Examples 36 to 38, wherein the loT device includes an loT gateway coupled to a number of sensors.
[0187] Example 40 includes the subject matter of any of Examples 36 to 39, wherein the backpressure monitor is configured to calculate the polling interval.
[0188] Example 41 includes the subject matter of any of Examples 36 to 40, wherein the backpressure monitor is configured to calculate a replay rate.
[0189] Example 42 provides a method for controlling an internet of things (loT) device based on a congestion level, c. The method includes polling a sensor, writing a measurement to a file, parsing the file to create a message, and checking for a backpressure alert message. If a backpressure alert message is found the message is saved to a cache and a polling interval is changed.
[0190] Example 43 includes the subject matter of Example 42, including initializing a polling interval, p„ as a maximum value of a current rate, r, or a backpressure rate, b.
[0191] Example 44 includes the subject matter of any of Examples 42 or 43, including if the backpressure alert message is not found, dispatching the message to a consumer, and determining if the dispatch was successful. If the dispatch was successful the file is moved to a processed directory.
[0192] Example 45 includes the subject matter of any of Examples 42 to 44, including if the dispatch was not successful, saving the message to a cache.
[0193] Example 46 includes the subject matter of any of Examples 42 to 45, including calculating a new polling interval, p„ using the following equation:
Figure imgf000040_0001
In this equation, A7¾ denotes a message size expressed in kB, d denotes an amount of free disk space on an edge device expressed in kB, /- denotes a current messaging rate, and b denotes a backpressure rate. [0194] Example 47 includes the subject matter of any of Examples 42 to 46, including replaying the message from the cache. Replaying the message includes checking if a backpressure alert is present at the loT device, and, if not, requesting the backpressure alert message from a cloud. A replay rate, r, is calculated. If the replay rate is zero, then iterating checking for the backpressure alert.
[0195] Example 48 includes the subject matter of any of Examples 42 to 47, including calculating an updated replay rate by the following equation:
r" = r *f.
In this equation, r' denotes the updated replay rate and /denotes a message dispatch frequency. The replay rate is replaced with the updated replay rate.
[0196] Example 49 includes the subject matter of any of Examples 42 to 48, wherein / is once per minute.
[0197] Example 50 includes the subject matter of any of Examples 42 to 49, including, if the replay rate is greater than zero, selecting the message from the cache, and dispatching the message to the cloud.
[0198] Example 51 includes the subject matter of any of Examples 42 to 50, including checking if the cache is empty, and, if not, replaying the message from the cache.
[0199] Example 52 provides a non-transitory, computer readable medium including instructions to direct a processor to check for network congestion, adjust a replay rate, and dispatch a message to a cloud.
[0200] Example 53 includes the subject matter of Example 52, including instructions to direct the processor to adjust a polling interval.
[0201] Example 54 includes the subject matter of any of Example 52 or 53, including instructions to direct the processor to replay messages from a queue.
[0202] Example 55 includes the subject matter of any of Example 52 to 54, including instructions to direct the processor to request a backpressure alert message.
[0203] Example 56 includes the subject matter of any of Example 52 to 55, including instructions to direct the processor to create the message.
[0204] Example 57 provides an internet of things (loT) device for managing communication congestion, including a data transfer controller configured to create sensor messages and dispatch the sensor messages to a pipeline processing application in a cloud. The loT device includes a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the data transfer controller, a polling interval for polling a sensor, or both. The loT devices also includes a data store configured to buffer messages that cannot be sent due to communication issues.
[0205] Example 58 includes the subject matter of Example 57, wherein the backpressure alert messages include a congestion level, c.
[0206] Example 59 includes the subject matter of any of Examples 57 or 58, wherein the backpressure monitor is configured to calculate the polling interval.
[0207] Example 60 includes the subject matter of any of Examples 57 to 59, wherein the backpressure monitor is configured to calculate a replay rate.
[0208] Example 61 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a means for adjusting a rate of dispatch of sensor messages from the loT device, a polling interval for polling a sensor, or both.
[0209] Example 62 includes the subject matter of Example 61 , including a means for calculating a congestion level, c.
[0210] Example 63 includes the subject matter of any of Examples 61 or 62, including a means for calculating a polling interval.
[0211] Example 64 includes the subject matter of any of Examples 61 to 63, including a means for calculating a replay rate.
[0212] Example 65 provides an apparatus for managing communication congestion for internet of things (loT) devices, including an loT device that includes a data transfer controller configured to create a sensor message and dispatch the sensor message to a pipeline processing application in a cloud. The loT device includes a data store configured to store the sensor message in a cache if it cannot be sent due to communication issues, and a data backlog transfer controller configured to send the sensor message from the data store. [0213] Example 66 includes the subject matter of Examples 65, wherein the data backlog transfer controller is configured to send the sensor message from the cache using a first in-first out mode, a last in-first out mode, or a sampled mode.
[0214] Example 67 includes the subject matter of either of Examples 65 or 66, wherein the data backlog transfer controller is configured to accept control messages that change a mode for sending the sensor message.
[0215] Example 68 includes the subject matter of any of Examples 65 to 67, wherein the loT device includes an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to send sensor messages from the number of loT devices to the pipeline processing application.
[0216] Example 69 includes the subject matter of any of Examples 65 to 68, wherein the loT device includes an loT gateway coupled to a number of sensors.
[0217] Example 70 includes the subject matter of any of Examples 65 to 69, including a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the cache.
[0218] Example 71 provides a method for controlling communications from an internet of things (loT) device. The method includes dispatching a message to a data processing application in a cloud using a selected mode for selecting the message from a cache, and checking for a request from the cloud to change the mode.
[0219] Example 72 includes the subject matter of Examples 71 , wherein, if the request is received, the request to change the mode is parsed. A determination is made as to whether the request is to change to a last in-first out (LIFO) mode, and, if so, configuring the LIFO mode. A determination is made as to whether the request is to change to a sampled mode, and, if so, configuring the sampled mode. A determination is made as to whether the request is to change to change to a first in- first out (FIFO) mode, and, if so, configuring the FIFO mode.
[0220] Example 73 includes the subject matter of either of Examples 71 or 72, including dispatching the message using a LIFO mode. Dispatching the message using the LIFO mode includes selecting the message from a queue, wherein the message is a last message added to the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
[0221] Example 74 includes the subject matter of any of Examples 71 to 73, including dispatching the message using a FIFO mode. Dispatching the message using the FIFO mode includes selecting the message from a queue, wherein the message is a first message added to the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
[0222] Example 75 includes the subject matter of any of Examples 71 to 74, including dispatching the message using a sampled mode. Dispatching the message using the sampled mode includes selecting the message from a queue, wherein the message is randomly selected from the queue. The message is dispatched to a consumer and it is determined as to whether the dispatch was successful. If so, the message is deleted from the queue.
[0223] Example 76 includes the subject matter of any of Examples 71 to 75, wherein dispatching the message, includes checking if a backpressure alert is present at an loT device. If a backpressure alert is not present, a backpressure alert message is requested from a cloud component. A replay rate, r; is calculated, and if the replay rate is zero, then iterating checking for the backpressure alert.
[0224] Example 77 includes the subject matter of any of Examples 71 to 76, including calculating an updated replay rate by the following equation:
r" = r *f.
In this equation, r' denotes the updated replay rate and /denotes a message dispatch frequency; and replacing a current replay rate with the updated replay rate.
[0225] Example 78 includes the subject matter of any of Examples 71 to 77, wherein / is once per minute.
[0226] Example 79 includes the subject matter of any of Examples 71 to 78, including checking if a queue is empty, and, if not, selecting another sensor message from the queue.
[0227] Example 80 provides a non-transitory, computer readable medium including instructions to direct a processor to adjust a replay mode, wherein the replay mode is selected from a last in-first out (LIFO) mode, a first in-first out (FIFO) mode, or a sampled mode. Instructions are included to direct a processor to adjust a replay rate, select a message from a queue using the replay mode, and dispatch the message to a cloud.
[0228] Example 81 includes the subject matter of Example 80, including instructions to direct the processor to request a backpressure alert message.
[0229] Example 82 includes the subject matter of either of Examples 80 or 81 , including instructions to direct the processor to adjust the replay rate based, at least in part, on the backpressure alert message.
[0230] Example 83 includes the subject matter of any of Examples 80 to 82, including instructions to determine if the message has been successfully dispatched, and, if so, delete the message from the queue.
[0231] Example 84 includes the subject matter of any of Examples 80 to 83, including instructions to direct the processor to create the message.
[0232] Example 85 provides an internet of things (loT) device for managing communication congestion. The loT device includes a data transfer controller configured to create a sensor message and dispatch the sensor message to a pipeline processing application in a cloud. A data store is configured to store the sensor message in a cache if it cannot be sent due to communication issues. A data backlog transfer controller is configured to send the sensor message from the data store when the communications issues are not present.
[0233] Example 86 includes the subject matter of Example 85, wherein the data backlog transfer controller is configured to send the sensor message from the cache using a first in-first out mode, a last in-first out mode, or a sampled mode.
[0234] Example 87 includes the subject matter of either of Examples 85 or 86, wherein the data backlog transfer controller is configured to accept control messages that change a mode for sending the sensor message.
[0235] Example 88 includes the subject matter of any of Examples 85 to 87, including an loT gateway coupled to a number of loT devices and wherein the loT gateway is configured to send sensor messages from the number of loT devices to the pipeline processing application.
[0236] Example 89 includes the subject matter of any of Examples 85 to 88, including an loT gateway coupled to a number of sensors. [0237] Example 90 includes the subject matter of any of Examples 85 to 89, including a backpressure monitor configured to accept backpressure alert messages, wherein the backpressure monitor is configured to adjust a rate of dispatch of sensor messages from the cache.
[0238] Example 91 provides an apparatus for managing communication congestion for internet of things (loT) devices, including a means for sending a backlogged message from a cache.
[0239] Example 92 includes the subject matter of Example 91 , including a means for sending the sensor message using a first in-first out mode, a last in-first out mode, or a sampled mode.
[0240] Example 93 includes the subject matter of either of Examples 91 or 92, including a means for changing a mode for sending the sensor message.
[0241] Example 94 includes the subject matter of any of Examples 91 to 93, including a means for adjusting a rate of dispatch of messages from the cache.
[0242] Some embodiments may be implemented in one or a combination of hardware, firmware, and software. Some embodiments may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by a computing platform to perform the operations described herein. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine, e.g., a computer. For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; or electrical, optical, acoustical or other form of propagated signals, e.g., carrier waves, infrared signals, digital signals, or the interfaces that transmit and/or receive signals, among others.
[0243] An embodiment is an implementation or example. Reference in the specification to "an embodiment," "one embodiment," "some embodiments," "various embodiments," or "other embodiments" means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least some embodiments, but not necessarily all embodiments, of the techniques. The various appearances of "an embodiment", "one embodiment", or "some
embodiments" are not necessarily all referring to the same embodiments. Elements or aspects from an embodiment can be combined with elements or aspects of another embodiment.
[0244] Not all components, features, structures, characteristics, etc. described and illustrated herein need be included in a particular embodiment or embodiments. If the specification states a component, feature, structure, or characteristic "may", "might", "can" or "could" be included, for example, that particular component, feature, structure, or characteristic is not required to be included. If the specification or claim refers to "a" or "an" element, that does not mean there is only one of the element. If the specification or claims refer to "an additional" element, that does not preclude there being more than one of the additional element.
[0245] It is to be noted that, although some embodiments have been described in reference to particular implementations, other implementations are possible according to some embodiments. Additionally, the arrangement and/or order of circuit elements or other features illustrated in the drawings and/or described herein need not be arranged in the particular way illustrated and described. Many other arrangements are possible according to some embodiments.
[0246] In each system shown in a figure, the elements in some cases may each have a same reference number or a different reference number to suggest that the elements represented could be different and/or similar. However, an element may be flexible enough to have different implementations and work with some or all of the systems shown or described herein. The various elements shown in the figures may be the same or different. Which one is referred to as a first element and which is called a second element is arbitrary.
[0247] The techniques are not restricted to the particular details listed herein. Indeed, those skilled in the art having the benefit of this disclosure will appreciate that many other variations from the foregoing description and drawings may be made within the scope of the present techniques. Accordingly, it is the following claims including any amendments thereto that define the scope of the techniques.

Claims

Claims What is claimed is:
1 . An apparatus for managing communication congestion for internet of things (loT) devices, comprising:
a pipeline processing application, wherein the pipeline processing application is configured to:
send tracer messages to each of a plurality of components in a cloud; determine a congestion level, c, by time differences between
responses and the tracer messages; and generate backpressure alert messages
an loT device, comprising:
a data transfer controller configured to dispatch messages to the
pipeline processing application in the cloud; and
a backpressure monitor configured to accept the backpressure alert messages and adjust a dispatch of messages from the data transfer controller.
2. The apparatus of claim 1 , wherein the responses comprise forwarded tracer messages.
3. The apparatus of claim 1 , wherein the loT device comprises an loT gateway coupled to a plurality of loT devices and wherein the loT gateway is configured to pass messages from the plurality of loT devices to the pipeline processing application.
4. The apparatus of claim 1 , wherein the loT device comprises an loT gateway coupled to a plurality of sensors.
5. The apparatus of any of claims 1 to 4, comprising a data router in the cloud interfaced to the loT device, wherein the data router is configured to send backpressure alert messages to the loT device.
6. The apparatus of any of claims 1 to 4, comprising a storage device, wherein the storage device comprises a store of responses to the tracer messages, and wherein the store of responses is queried to determine time differences between messages.
7. The apparatus of any of claims 1 to 4, wherein the loT device comprises:
a sensor configured to measure a parameter; and
a network interface to dispatch a message comprising the parameter.
8. A method for measuring backpressure in a computing cloud, comprising:
sending out tracer messages to a plurality of components in a cloud;
monitoring for response messages from the plurality of components;
storing received response messages in a storage system;
querying the response messages to determine network conditions in the
cloud; and
creating an alert message to report network conditions to an internet of things (loT) device.
9. The method of claim 8, comprising identifying that a component has failed by a missing response message.
10. The method of claim 8, comprising determining a time difference between sending a tracer message and storing a corresponding response message.
1 1 . The method of claim 8, comprising calculating a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud.
12. The method of claim 1 1 , comprising setting c as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
13. The method of claim 12, comprising calculating tc for a component as a ratio of a current time for a response divided by a baseline time for the response from the component.
14. The method of claim 12, comprising calculating be from an amount of free disk space, a message rate, a size of messages, or a number of seconds required to fill a buffer, or any combinations thereof.
15. The method of any of claims 12 to 14, comprising calculating be by: calculating the number of seconds, n, required to fill a buffer using the
following equation: df . ms
rrik 60 ' wherein is a current free disk space total in kB, mk, denotes an average message size in kB, and ms, denotes a current message per second rate as determined from a data processing pipeline;
calculating the buffer congestion level, bc[n], using the following equation:
Figure imgf000050_0001
wherein dp denotes a free disk space percentage on the cloud components, p resh is a configurable free disk space threshold, e.g. 50%; and calculating bcn, using the following equation:
wherein d-max _ ms
-max mfc 60 and dmax denotes the maximum disk space available to the system
16. The method of any of claims 12 to 14, comprising setting c to a lowest value determined for a component in a data processing pipeline.
17. The method of any of claims 12 to 14, comprising generating an alert message comprising c.
18. The method of any of claims 12 to 14, comprising generating a java script object notation (JSON) message comprising c.
19. The method of claim 17, comprising sending the alert message to the loT device.
20. The method of claim 17, comprising storing the alert message for access by the loT device.
21 . A non-transitory, computer readable medium comprising code to direct a processor to:
send out tracer messages to a plurality of components in a cloud;
monitor for response messages from the plurality of components;
store received response messages in a storage system;
query the response messages to determine network conditions in the cloud; and create an alert message to report network conditions to an internet of things (loT) device.
22. The non-transitory, computer readable medium of claim 21 , comprising code to direct a processor to identify that a component has failed by a missing response message.
23. The non-transitory, computer readable medium of claim 21 , comprising code to direct a processor to calculate a congestion level, c, as a number between 0 and 1 , wherein a lower value for c represents a slower transfer of data in the cloud, wherein c is set as a lower value of a throughput congestion level, tc, or a buffer congestion level, be.
24. An apparatus for managing communication congestion for internet of things (loT) devices, comprising a pipeline processing application, wherein the pipeline processing application comprises a means for determining a congestion level, c, in a cloud.
25. The apparatus of claim 24, comprising an loT device, comprising means for adjusting a dispatch of messages based, at least in part, on the congestion level
PCT/US2016/063907 2015-12-23 2016-11-29 Managing communication congestion for internet of things devices WO2017112364A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/757,774 US10057150B2 (en) 2015-12-23 2015-12-23 Managing communication congestion for internet of things devices
US14/757,774 2015-12-23

Publications (1)

Publication Number Publication Date
WO2017112364A1 true WO2017112364A1 (en) 2017-06-29

Family

ID=59086725

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/063907 WO2017112364A1 (en) 2015-12-23 2016-11-29 Managing communication congestion for internet of things devices

Country Status (2)

Country Link
US (1) US10057150B2 (en)
WO (1) WO2017112364A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141590A (en) * 2021-03-24 2021-07-20 中国科学院沈阳计算技术研究所有限公司 Wireless communication scheduling method and device for industrial Internet of things

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10305805B2 (en) * 2016-07-01 2019-05-28 Intel Corporation Technologies for adaptive routing using aggregated congestion information
US10216540B2 (en) 2016-11-28 2019-02-26 Amazon Technologies, Inc. Localized device coordinator with on-demand code execution capabilities
US10417049B2 (en) 2016-11-28 2019-09-17 Amazon Technologies, Inc. Intra-code communication in a localized device coordinator
US10372486B2 (en) 2016-11-28 2019-08-06 Amazon Technologies, Inc. Localized device coordinator
US10452439B2 (en) 2016-11-28 2019-10-22 Amazon Technologies, Inc. On-demand code execution in a localized device coordinator
US10637817B2 (en) 2016-11-28 2020-04-28 Amazon Technologies, Inc. Managing messaging protocol communications
US10783016B2 (en) 2016-11-28 2020-09-22 Amazon Technologies, Inc. Remote invocation of code execution in a localized device coordinator
US10608973B2 (en) 2016-11-28 2020-03-31 Amazon Technologies, Inc. Embedded codes in messaging protocol communications
JP6749281B2 (en) * 2017-03-23 2020-09-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 IoT device, signaling server, message bus management server, connection forming method, and program
CN107665425B (en) * 2017-09-27 2021-07-30 曙光信息产业(北京)有限公司 Real-time charging method and system based on operation control
US11689414B2 (en) 2017-11-10 2023-06-27 International Business Machines Corporation Accessing gateway management console
US10700926B2 (en) * 2017-11-10 2020-06-30 International Business Machines Corporation Accessing gateway management console
US10652107B2 (en) 2017-11-10 2020-05-12 International Business Machines Corporation Accessing gateway management console
US10644961B2 (en) 2018-01-12 2020-05-05 Intel Corporation Self-adjusting data processing system
JP6477935B1 (en) * 2018-02-13 2019-03-06 オムロン株式会社 Preprocessing determination device, preprocessing determination method, and program
US11044159B2 (en) 2018-03-09 2021-06-22 International Business Machines Corporation Application-level, cooperative minimization of offlining incidents in an internet of things (IoT) environment
US10797965B2 (en) * 2018-07-30 2020-10-06 Dell Products L.P. Dynamically selecting or creating a policy to throttle a portion of telemetry data
EP3648502B1 (en) * 2018-10-29 2022-02-23 Giesecke+Devrient Mobile Security GmbH Polling from device to ota core system via ota edge system
CN111125648B (en) * 2018-11-01 2022-03-29 大唐移动通信设备有限公司 Equipment change method and device
US11200331B1 (en) 2018-11-21 2021-12-14 Amazon Technologies, Inc. Management of protected data in a localized device coordinator
US11411832B2 (en) * 2018-12-28 2022-08-09 Intel Corporation Methods and apparatus to generate optimized models for internet of things devices
CN113491088B (en) * 2019-02-14 2022-08-16 三菱电机株式会社 Data processing apparatus and data processing system
US11372654B1 (en) 2019-03-25 2022-06-28 Amazon Technologies, Inc. Remote filesystem permissions management for on-demand code execution
US20210329100A1 (en) * 2020-04-10 2021-10-21 Oracle International Corporation System and method for use of remote procedure call with a microservices environment
US11836645B2 (en) * 2020-06-15 2023-12-05 Nvidia Corporation Generating augmented sensor data for testing operational capability in deployed environments
CN112469087B (en) * 2020-11-30 2023-02-21 广东美的制冷设备有限公司 Method for adjusting communication rate of air conditioning equipment, terminal and storage medium
US11606422B2 (en) * 2021-01-20 2023-03-14 Samsung Electronics Co., Ltd. Server for controlling data transmission through data pipeline and operation method thereof
US11611631B2 (en) * 2021-02-18 2023-03-21 Panduit Corp. Secure remotely controlled system, device, and method
US20240039820A1 (en) * 2022-08-01 2024-02-01 Schneider Electric Systems Usa, Inc. Messaging protocol for configuring remote terminal unit

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070008884A1 (en) * 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network
US8443072B1 (en) * 2004-07-21 2013-05-14 Avaya Inc. Method and apparatus for managing network congestion due to automatic configuration procedures
US20140286164A1 (en) * 2013-03-21 2014-09-25 Nec Laboratories America, Inc. Flow management for data streams over cellular networks
US20140337435A1 (en) * 2011-12-13 2014-11-13 Gerald Kaefer Device and Method for the Dynamic Load Management of Cloud Services
US20150195738A1 (en) * 2012-08-07 2015-07-09 Intel Mobile Communications GmbH Methods and apparatuses for rate adaptation of quality of service based application

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173323B1 (en) * 1997-12-24 2001-01-09 Lucent Technologies Inc. Adaptive polling rate algorithm for SNMP-based network monitoring
US20160321480A1 (en) 2005-12-09 2016-11-03 Tego, Inc. Methods and systems for rf communications in blood-extraction procedures
JP4562694B2 (en) 2006-06-20 2010-10-13 富士通株式会社 Retransmission control method and apparatus
JP4861112B2 (en) 2006-09-27 2012-01-25 富士通株式会社 Optical semiconductor device and manufacturing method thereof
TR200805998A2 (en) 2008-08-12 2009-12-21 Kodalfa B�Lg� Ve �Let���M Teknoloj�Ler� Sanay� Ve T�Caret A.�. Remote wireless climate monitoring and control system for greenhouses
US8351465B2 (en) 2009-12-04 2013-01-08 Cable Television Laboratories, Inc. System and method of decoupling media access control (MAC) and physical (PHY) operating layers
US8787202B2 (en) 2010-06-22 2014-07-22 George W. Kuriyan Method and system using wireless packet data networks architecture for remote process control and process monitoring applications
WO2012170920A1 (en) 2011-06-10 2012-12-13 Bytemobile, Inc. On-demand adaptive bitrate management for streaming media over packet networks
WO2013005818A1 (en) * 2011-07-01 2013-01-10 日本電気株式会社 Communication system and base station device
WO2013142273A1 (en) * 2012-03-19 2013-09-26 Citrix Systems, Inc. Systems and methods for providing user interfaces for management applications
US20140095170A1 (en) 2012-10-01 2014-04-03 2220213 Ontario Inc. User programmable monitoring system, method and apparatus
US20140275888A1 (en) 2013-03-15 2014-09-18 Venture Gain LLC Wearable Wireless Multisensor Health Monitor with Head Photoplethysmograph
US8914551B2 (en) 2013-04-09 2014-12-16 Analog Devices, Inc. Sensor polling unit for microprocessor integration
US9072050B2 (en) 2013-10-03 2015-06-30 Qualcomm Incorporated Power saving with adaptive inactivity time out
US20150134954A1 (en) * 2013-11-14 2015-05-14 Broadcom Corporation Sensor management system in an iot network
KR20150066335A (en) 2013-12-06 2015-06-16 가온미디어 주식회사 Method And Apparatus For Reducing The Discarded Packets In Wireless Communication
US10827410B2 (en) 2014-04-01 2020-11-03 Umm-Al-Qura University System, apparatus and method for robust transmission of visual data through visual sensor network
EP3167598B1 (en) 2014-07-07 2021-04-14 Harman Connected Services, Inc. Remote embedded device update platform apparatuses, methods and systems
US9294476B1 (en) 2015-02-18 2016-03-22 Keeper Security, Inc. User-defined identity verification system
CA3025141A1 (en) 2015-05-21 2016-11-24 Aquadation Llc Structural foundation monitoring sensor system
US9684457B2 (en) 2015-05-21 2017-06-20 Intel Corporation Gathering sensed data from devices to manage host command transmission and cooling of the devices
US10333905B2 (en) 2015-10-16 2019-06-25 Orock Technologies, Inc. System for providing end-to-end protection against network-based attacks
US11621900B2 (en) 2015-12-23 2023-04-04 Intel Corporation Selective measurement reporting from internet of things devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070008884A1 (en) * 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network
US8443072B1 (en) * 2004-07-21 2013-05-14 Avaya Inc. Method and apparatus for managing network congestion due to automatic configuration procedures
US20140337435A1 (en) * 2011-12-13 2014-11-13 Gerald Kaefer Device and Method for the Dynamic Load Management of Cloud Services
US20150195738A1 (en) * 2012-08-07 2015-07-09 Intel Mobile Communications GmbH Methods and apparatuses for rate adaptation of quality of service based application
US20140286164A1 (en) * 2013-03-21 2014-09-25 Nec Laboratories America, Inc. Flow management for data streams over cellular networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141590A (en) * 2021-03-24 2021-07-20 中国科学院沈阳计算技术研究所有限公司 Wireless communication scheduling method and device for industrial Internet of things
CN113141590B (en) * 2021-03-24 2023-09-19 中国科学院沈阳计算技术研究所有限公司 Industrial Internet of things-oriented wireless communication scheduling method and device

Also Published As

Publication number Publication date
US20170187597A1 (en) 2017-06-29
US10057150B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
US10097379B2 (en) Managing communication congestion for internet of things devices
US10057150B2 (en) Managing communication congestion for internet of things devices
US9923821B2 (en) Managing communication congestion for internet of things devices
JP7454662B2 (en) Information transmission method, device, readable storage medium and electronic device
US11375250B2 (en) Dynamic load balancing for video analytics pipelines
EP2288086B1 (en) Network monitoring device, bus system monitoring device, method and program
US20200357259A1 (en) Alert system for internet of things (iot) devices
US11019151B2 (en) Message schema control
JP3593528B2 (en) Distributed network management system and method
US9218216B2 (en) Centrally driven performance analysis of low power and Lossy Networks
US10638409B2 (en) Wi-Fi roaming management
US8341279B2 (en) Dynamically activating buffered data publishers in sensor networks
US10764219B2 (en) Message schema control
CN109412966B (en) Large-scale log transmission method, device and system
CN112311688B (en) Rate update engine for reliable transport protocol
US11593176B2 (en) Computer-readable recording medium storing transfer program, transfer method, and transferring device
EP3062231A1 (en) Communication system, shared service control unit, data transmission method, and non-transitory computer-readable medium
JP2014112779A (en) Data transmission controller, data transmission control method, and computer program
US9882751B2 (en) Communication system, communication controller, communication control method, and medium
CN115333917A (en) CDN anomaly detection method and device
US10177929B1 (en) System for distributing data to multiple devices
CN118612122A (en) Heartbeat interval configuration method based on data processing unit DPU
Helbig et al. Modeling and Evaluation of the Internet of Things Communication Protocols in Security Constrained Systems
CN118828702A (en) Information processing method, information processing apparatus, related device, storage medium, and computer program product

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16879839

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16879839

Country of ref document: EP

Kind code of ref document: A1