Patent Publication Number: US-9888073-B2

Title: System and method for managing a collective data transfer rate of a plurality of edge devices

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to managing a plurality of edge devices. More specifically, the present invention relates to automatic and autonomous management of a data transfer rate of a plurality of edge devices. 
     BACKGROUND OF THE INVENTION 
     Network edge devices are known in the art. For example, edge devices that include a computing device and a camera may be deployed in a remote site, e.g., for surveillance, security or other purposes. To manage the collective data transfer rate of a set of edge devices in a site, some of the known systems and methods configure each of the edge devices, e.g., using remote access. Other known systems and methods use a server at the remote site in order to configure or control the edge devices. However, a remote server may fail or be disconnected from a network and configuring each of the remote edge devices may be costly and error prone. 
     SUMMARY OF THE INVENTION 
     A system and method of managing a collective data transfer rate of a plurality of edge devices may include designating, by a plurality of edge devices, one of the plurality of the edge devices a master device. A system and method may include controlling, by each edge device, a data transfer rate of the edge device based on at least one flag of the edge device, the at least one flag set by the designated master device. A system and method may include dynamically setting, by the designated master device, the at least one flag for each of the plurality of edge devices, such that controlling the data transfer rate by the plurality of edge devices is synchronized. 
     The plurality of edge devices may include a camera and controlling the data transfer rate may include controlling one of: a frame rate of the camera and a resolution of the camera. 
     A system and method may include, at each edge device, if network congestion has been detected and a “Down” flag of the edge device is set to “true” then reducing the data transfer rate of the edge device by a predefined step and setting the “Down” flag of the edge device to “false”. A system and method may include, at a designated master device, if the “Down” flags of all edge devices are set to “false” then setting the “Down” flags of all edge devices to “true”. 
     A system and method may include, at each edge device, if excess network bandwidth is detected and an “Up” flag of the edge device is set to “true”, then increasing the data transfer rate of the edge device and setting the “Up” flag of the edge device to “false”, and at the designated master device, if the “Up” flags of all edge devices are set to “false”, then set all “Up” flags of all edge devices to “true”. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanied drawings. Embodiments of the invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numerals indicate corresponding, analogous or similar elements, and in which: 
         FIG. 1  shows high level block diagram of an exemplary computing device according to some embodiments of the present invention; 
         FIG. 2  is an overview of a system according to some embodiments of the present invention; and 
         FIG. 3  shows a flow a according to some embodiments of the present invention. 
     
    
    
     It will be appreciated that, for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn accurately or to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity, or several physical components may be included in one functional block or element. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. 
     DETAILED DESCRIPTION OF THE INVENTION 
     In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components, modules, units and/or circuits have not been described in detail so as not to obscure the invention. Some features or elements described with respect to one embodiment may be combined with features or elements described with respect to other embodiments. For the sake of clarity, discussion of same or similar features or elements may not be repeated. 
     Although embodiments of the invention are not limited in this regard, discussions utilizing terms such as, for example, “processing,” “computing,” “calculating,” “determining,” “establishing”, “analyzing”, “checking”, or the like, may refer to operation(s) and/or process(es) of a computer, a computing platform, a computing system, or other electronic computing device, that manipulates and/or transforms data represented as physical (e.g., electronic) quantities within the computer&#39;s registers and/or memories into other data similarly represented as physical quantities within the computer&#39;s registers and/or memories or other information non-transitory storage medium that may store instructions to perform operations and/or processes. Although embodiments of the invention are not limited in this regard, the terms “plurality” and “a plurality” as used herein may include, for example, “multiple” or “two or more”. The terms “plurality” or “a plurality” may be used throughout the specification to describe two or more components, devices, elements, units, parameters, or the like. The term set when used herein may include one or more items. Unless explicitly stated, the method embodiments described herein are not constrained to a particular order or sequence. Additionally, some of the described method embodiments or elements thereof can occur or be performed simultaneously, at the same point in time, or concurrently. 
     Reference is made to  FIG. 1 , showing a high level block diagram of an exemplary computing device according to some embodiments of the present invention. Computing device  100  may include a controller  105  that may be, for example, a central processing unit processor (CPU), a chip or any suitable computing or computational device, an operating system  115 , a memory  120 , an executable code  125 , a storage  130 , input devices  135  and output devices  140 . Controller  105  may be configured to carry out methods described herein, and/or to execute or act as the various modules, units, etc. More than one computing device  100  may be included in a system, according to some embodiments of the invention, and one or more computing devices  100  may act as the various components of a system. For example, each of the edge devices described herein may be, or may include, components of computing device  100 . For example, by executing executable code  125  stored in memory  120 , controller  105  may be configured to carry out a method of managing a collective data transfer rate of a plurality of edge devices. 
     Operating system  115  may be or may include any code segment (e.g., one similar to executable code  125  described herein) designed and/or configured to perform tasks involving coordination, scheduling, arbitration, supervising, controlling or otherwise managing operation of computing device  100 , for example, scheduling execution of software programs or enabling software programs or other modules or units to communicate. Operating system  115  may be a commercial operating system. 
     Memory  120  may be or may include, for example, a Random Access Memory (RAM), a read only memory (ROM), a Dynamic RAM (DRAM), a Synchronous DRAM (SD-RAM), a double data rate (DDR) memory chip, a Flash memory, a volatile memory, a non-volatile memory, a cache memory, a buffer, a short term memory unit, a long term memory unit, or other suitable memory units or storage units. Memory  120  may be or may include a plurality of possibly different memory units. Memory  120  may be a computer or processor non-transitory readable medium or a computer non-transitory storage medium, e.g., a RAM. 
     Executable code  125  may be any executable code, e.g., an application, a program, a process, task or script. Executable code  125  may be executed by controller  105  possibly under control of operating system  115 . For example, executable code  125  may be an application that manages a collective data transfer rate of a plurality of edge devices as further described herein. Although, for the sake of clarity, a single item of executable code  125  is shown in  FIG. 1 , a system according to some embodiments of the invention may include a plurality of executable code segments similar to executable code  125  that may be loaded into memory  120  and cause controller  105  to carry out methods described herein. For example, units or modules described herein may be, or may include, controller  105  and executable code  125 . 
     Storage  130  may be or may include, for example, a hard disk drive, a floppy disk drive, a Compact Disk (CD) drive, a CD-Recordable (CD-R) drive, solid state drive (SSD), solid state (SD) card, a Blu-ray disk (BD), a universal serial bus (USB) device or other suitable removable and/or fixed storage unit. Content may be stored in storage  130  and may be loaded from storage  130  into memory  120  where it may be processed by controller  105 . In some embodiments, some of the components shown in  FIG. 1  may be omitted. For example, memory  120  may be a non-volatile memory having the storage capacity of storage  130 . Accordingly, although shown as a separate component, storage  130  may be embedded or included in memory  120 . 
     Input devices  135  may be or may include sensors or other components, e.g., a camera, a microphone, a motion detector and the like. Other components that may be included in input devices  135  may be a mouse, a keyboard, a touch screen or pad or any suitable input device. It will be recognized that any suitable number of input devices may be operatively connected to computing device  100  as shown by block  135 . Output devices  140  may include one or more displays or monitors, speakers and/or any other suitable output devices. It will be recognized that any suitable number of output devices may be operatively connected to computing device  100  as shown by block  140 . Any applicable input/output (I/O) devices may be connected to computing device  100  as shown by blocks  135  and  140 . For example, a wired or wireless network interface card (NIC), a universal serial bus (USB) device or external hard drive may be included in input devices  135  and/or output devices  140 . 
     Some embodiments of the invention may include an article such as a computer or processor non-transitory readable medium, or a computer or processor non-transitory storage medium, such as for example a memory, a disk drive, or a USB flash memory, encoding, including or storing instructions, e.g., computer-executable instructions, which, when executed by a processor or controller, carry out methods disclosed herein. For example, an article may include a storage medium such as memory  120 , computer-executable instructions such as executable code  125  and a controller such as controller  105 . 
     Some embodiments may be provided in a computer program product that may include a non-transitory machine-readable medium, stored thereon instructions, which may be used to program a computer, controller, or other programmable devices, to perform methods as disclosed herein. Some embodiments of the invention may include an article such as a computer or processor non-transitory readable medium, or a computer or processor non-transitory storage medium, such as for example a memory, a disk drive, or a USB flash memory, encoding, including or storing instructions, e.g., computer-executable instructions, which when executed by a processor or controller, carry out methods disclosed herein. The storage medium may include, but is not limited to, any type of disk including, semiconductor devices such as read-only memories (ROMs) and/or random access memories (RAMs), flash memories, electrically erasable programmable read-only memories (EEPROMs) or any type of media suitable for storing electronic instructions, including programmable storage devices. For example, in some embodiments, memory  120  is a non-transitory machine-readable medium. 
     A system according to some embodiments of the invention may include components such as, but not limited to, a plurality of central processing units (CPU) or any other suitable multi-purpose or specific processors or controllers (e.g., controllers similar to controller  105 ), a plurality of input units, a plurality of output units, a plurality of memory units, and a plurality of storage units. A system may additionally include other suitable hardware components and/or software components. In some embodiments, a system may include or may be, for example, a personal computer, a desktop computer, a laptop computer, a workstation, a server computer, a network device, or any other suitable computing device. For example, a system as described herein may include one or more devices such as computing device  100 . 
     An embodiment of system and method according to the invention may enable, or include, managing a collective data transfer rate of a plurality of edge devices, e.g., a plurality of edge devices in a remote site. Managing a collective data transfer rate of a plurality of edge devices by an embodiment of system and method according to the invention may enable maintaining a server-less site. For example, a plurality of edge devices that may include cameras or other sensors may appear to a user or to a system as a single remote site. For example, data transfer rate may be managed for the site without having to manage, or directly communicate with, each of the edge devices in the site. 
     According to some embodiments of the invention, a plurality of edge devices may automatically collaborate to autonomously designate one of the edge devices as a master device or master unit. Each of the edge devices may control its data transfer rate based on one or more flags that may be manipulated by the designated master device. The master unit may manipulate the flags of the edge devices such that the overall, global or total network data transfer rate generated by the plurality of edge devices is kept at a desired level. The master unit may manipulate the flags of the edge devices such that the cumulative data transfer rate generated by the plurality of edge devices is kept at a maximal level while avoiding congestion. The master unit may control or manage the edge devices such that the cumulative data transfer rate generated by the plurality of edge devices is kept at a desired or configured level. 
     Other aspects of a group of edge devices may be managed or controlled by an embodiment of the invention. For example, a total or cumulative peak data rate may be controlled for a group, set or plurality of edge devices. 
     The term “edge device” as referred to herein may be or may relate to any computing device that is, or that provides, an entry point into a system or into a network. For example, an edge device may be a computing device (e.g., similar to computing device  100 ) that is connected to a network. 
     The terms “data rate”, “transfer rate” and “bandwidth” as referred to herein may be, or may relate to, the amount of information transmitted over a network in a given amount of time. For example, these terms may be or may relate to the rate with which data is transferred through or over a network, e.g., as known in the art and measured in binary digits (bits) or bytes per second. 
     The terms “collective data rate” and “collective transfer rate” as referred to herein may be, or may relate to, the cumulative, total or aggregated data or transfer rate of a plurality of devices. For example, a collective data rate or a collective transfer rate may be the sum of the data rates or transfer rates of a plurality of edge devices. 
     Reference is made to  FIG. 2 , showing a system  200  according to some embodiments of the present invention. As shown, a system according to some embodiments of the invention may include a plurality of edge devices  210  that may be connected by a network  215 . For example, edge devices  210  may be located in a geographically remote site. As further shown, a system according to some embodiments of the invention may include, or be connected to, a network  230 . A system according to some embodiments of the invention may include, or be connected to, a server  240 . Each of edge devices  210  may be or may include components of, computing device  100 . In addition to components of computing device  100 , edge devices  210  may include other components. For example, edge devices  210  may include sensors or other devices, e.g., a camera, a closed-circuit television (CCTV) camera or other video surveillance components. Edge devices  210  may include various other components, e.g., a microphone, a motion detector, a heat sensor and the like. It will be understood that any number of edge devices  210  may be included in a system and each of edge devices  210  may include a computing device and any additional sensors or other components. In some embodiments, each of edge devices  210  may be a network device as known in the art, e.g., each of edge devices  210  may include a network card or other component enabling it to communicate over a network. For example, each of edge devices  210  may be adapted to communicate with server  240  over a network. For example and as described herein, server  240  may be a cloud server and edge devices  210  may be configured to communicate with server  240  over a network (e.g., over the internet). For example, a router (not shown) by be installed on network  215  and may enable edge devices  210  to communicate with server  240  that may be connected to the internet. 
     Networks  215  and  230  may be, may comprise or may be part of a private or public IP network, or the internet, or a combination thereof. Additionally or alternatively, networks  215  and  230  may be, comprise or be part of a global system for mobile communications (GSM) network. For example,  215  and  230  may include or comprise an IP network such as the internet, a GSM related network and any equipment for bridging or otherwise connecting such networks as known in the art. In addition,  215  and  230  may be, may comprise or be part of an integrated services digital network (ISDN), a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a wireline or wireless network, a local, regional, or global communication network, a satellite communication network, a cellular communication network, any combination of the preceding and/or any other suitable communication means. Accordingly, numerous elements of  215  and  230  are implied but not shown, e.g., access points, base stations, communication satellites, GPS satellites, routers, telephone switches, etc. It will be recognized that embodiments of the invention are not limited by the nature of  215  and  230  that may enable any components of system  200  to communicate. Server  240  may be any suitable computing device, e.g., a computing device similar to computing device  100  or server computer as known in the art. In some embodiments, edge devices  210  may communicate over network  230  and thus, network  215  may be omitted from a system without limiting the scope of the invention. In some embodiments server  240  may be a central or remote server on the cloud such that cloud computing as known in the art is enabled or supported by system  200 . For example, rather than using a local server located at the site where edge devices  210  are located, server  240  may be a cloud server as known in the art and may be used to store, manage, and process data as described herein. 
     Edge device  220  may be designated, by the plurality of edge devices  210 , as a master device. It will be understood that any one of the plurality of edge devices  210  may be designated as the master unit or master device. For example, all of edge devices  210  may include (e.g., in a memory  120 ) code that enables them to function as a master device as described herein. For example, a method of designating one of edge devices as the master device may be automatically performed or repeated upon discovering that none of edge devices  210  functions as a master device, e.g., in the case where an elected or designated master device stops functioning or is disconnected from network  215 . 
     For example, when first connecting to network  215 , each of edge devices  210  broadcasts identification information enabling all other edge devices  210  to know the edge device is now connected to network  215 . An appearance of a new edge device on network  215  may trigger a leader or master device election process. 
     For example, each of edge devices  210  may periodically broadcast a unique identification parameter, e.g., its media access control (MAC) address, which, as known in the art, is unique per device on a network. Other unique identification parameters may be used, e.g., a port number or a serial number configured by a user and stored, e.g., on storage  130  of each of edge devices  210 . Broadcasting as described herein may be as known in the art, e.g., sending a message to a broadcast address such that all devices on a network receive the message. 
     Each of edge devices  210  may maintain a list of all edge devices  210  on network  215 . For example, each of edge devices  210  may periodically check a list of devices and remove devices it has not heard from in the last predefined period of time. New devices appearing on network  215  may be added to a local list in each of edge devices  210 . Accordingly, at any given time, each of edge devices  210  may be aware of all other devices, e.g., a local list of all devices on network  215  may be maintained on each of edge devices  210 . Other configurations may be contemplated. For example, a single list may be maintained on a server (not shown) on network  215  and each of edge devices  210  may periodically check the list on the server. 
     A topology may be set automatically and collaboratively by edge devices  210 . For example, each of edge devices  210  run through the list of devices described herein and may select its ring successor to create ring topology. For example, a successor in the list may be selected by each edge devices  210  by selecting the device with the next, closest MAC address. The edge device with the highest MAC address may select the edge device with the lowest MAC address thus a ring may be defined. The ring (or other topology) may be re-defined upon appearance of a new device on the network. Various other methods as known in the art may be utilized by edge devices  210  in order to ensure that all of edge devices  210  are aware of each other and of a defined topology. 
     An appearance of a new device on network  215 , e.g., in the form of a broadcast of a MAC address by device connected to network  215  may trigger a process of selecting or designating a master unit. Other events may trigger an automated process of selecting or designating a master unit. For example, removal (or disappearance) of a device from network  215  may trigger an automated process of selecting or designating a master unit or the process may be repeated periodically. 
     For example, a removal of one of edge devices  210  from network  215  may be detected by means of a failure detection algorithm, e.g., one of the gossip multicast variants known in the art. For example, the device that detects the failure broadcasts the fact to the network, triggering a new discovery round. 
     A change in a defined topology, a removal or addition of a device to/from network  215  or any other event may cause edge devices  210  to designate or re-designate one of edge devices  210  a master device. Any logic may be used to designate a master unit. For example, the device with the highest or lowest MAC address may be selected as the master device. As described, a similar or same list of devices and their MAC addresses may be present in, or available to, all edge devices  210 , accordingly, edge devices  210  may all select the same device to be the master device. 
     Various methods may be used for designating or selecting a master device or unit. For example, in one embodiment, a process of designating a master device may start by all edge devices  210  setting the currently defined master device to null, e.g., upon receiving a broadcast message from a new device or being informed of a loss of a device. 
     Next, one of the well-known ring algorithms or other algorithms may be used. For example, the device starting the master device election sends a “Start Election” message to its successor including its identification parameter value (e.g., MAC address) in the message payload. A “Start Election” message may be any message sent over a network, for example, a message containing a predefined value, or the text “Start Election” in its header. An edge device receiving a “Start Election” message may do the following: If its own identification value is greater than the identification value received in the message it replaces the message identification value with its own identification value. An edge device may then send a “Start Election” message to its successor with the (possibly modified as described) identification value. If a device receives a message that includes its own identification value the device determines that the message has completed a full round through the ring and that it has the highest identification value on the network. In such case, the device may designate itself as a “candidate master unit” and may send an “Elected” message to its successor, including its identification value in the message. An “Elected” message may be any message sent over a network, for example, a message containing a predefined value, or the text “Elected” in its header. 
     Upon receipt an “Elected” message, a receiving edge device may log the indicated “Elected” or “candidate master unit” and may forward the message through the ring with no modifications. Each edge device may check if the elected identification value is its own, if it is, then this means that the message has completed a full circle of the ring, the device is the master unit, and the process of selecting a master unit is completed. 
     As further described herein, a master device designated or elected as described herein may represent the plurality of edge devices  210 . For example, in the capacity of master unit, edge device  220  may represent all of edge devices  210  such that an application or user on server  240  may interact with the plurality of edge devices  210  as if they were a single entity or a managed site. For example, a user or application on server  240  may set the aggregated or collective data transfer rate of all of edge devices  210  by only interacting with edge device  220  as described herein. 
     For example, master device  220  may send a list of all edge devices  210  to a management application on server  240  and the management application may identify and/or record the list as a site. The management application may associate the site with a user, e.g., as known in the art. Attributes of the site, e.g., data upload rate or data transfer rate may be managed by interacting with master unit  220 . For example, a user may set a data transfer rate for the site, inform master unit  220  of the data transfer rate and master unit  220  may control or manage edge devices  210  as described herein such that the collective data transfer rate of edge devices  210  is according to the setting of the transfer rate for the site. For example, the collective data rate of edge devices  210  may be controlled such that it is equal to, or less than, a data transfer rate of a site, where the site is the collection or edge devices  210 . 
     Controlling data transfer rate may be achieved in various ways. For example, in an embodiment, edge devices  210  include cameras that capture and provide or produce video and/or audio content. To reduce data transfer rate, edge devices  210  may reduce the frame rate of the cameras and/or the resolution of the cameras as known in the art. Other methods may include compressing data captured by edge devices  210 , filtering data and so on. For example, to reduce its data transfer rate, a device included in edge devices  210  may reduce the frame rate or resolution of a connected camera such that the amount of data produced and sent by the device is reduced. Similarly, to increase its data transfer rate, a device included in edge devices  210  may increase the frame rate or resolution of a connected camera such that the amount of data produced and sent by the device is increased. 
     According to some embodiments of the invention, each of edge devices  210  may check or determine its data transfer rate. For example, each of edge devices  210  may determine its data upload speed or rate and/or determine whether or not congestion occurs. The terms “network congestion” or “congestion” as referred to herein may be as known in the art. For example, the terms may relate to a loss of information transmitted over a network, a failure to transmit information over a network, or a situation wherein increasing the amount of data transmitted per a time unit, from a device to a network, does not result in an increase of the amount of data that actually passes through a network per unit of time (throughput). Measuring a data rate or and determining congestion are known in the art, each of edge devices  210  may determine its data rate or identify congestion as known in the art. 
     According to some embodiments of the invention, each of edge devices  210  may control its data transfer rate based on one or more flags of the edge device. A flag of a device as referred to herein may be a variable, e.g., a 16 bits integer as known in the art. For example, a flag may be a variable in a memory (e.g., in memory  120 ) or it may be a value stored in a storage system (e.g., in storage  130 ). 
     Master device  220  may dynamically set or modify the flags of edge devices  210 . For example, using application programming interface (API), remote procedure call (RPC) or other methods known in the art, master device  220  may modify a flag in a memory of any of edge devices  210 . For example, the flags of each device may be or may include an “Up” flag, a “Down” flag and a “Reset” flag. Each edge device may further include or have a “Data rate” parameter or value and a “Rate modification step” configuration parameter or value. For example, the “Up”, “Down”, “Reset” flags, and “Data rate” and “Rate modification step” configuration parameters may be memory segments in a memory of an edge device and the memory segment may be accessible to master device  220 . For example, master device  220  may set an “Up”, “Down” or “Reset” flag of an edge device to “TRUE” or “FALSE” and/or set “Rate modification step” configuration parameter of a device to 1 mega-bits per second (MBits/Sec). For example, the value of one “1” of a flag may be or may indicate “TRUE” and a value of zero in a flag may be or may indicate a “FALSE”. 
     Various modes of operations of system  200  may be contemplated. For example, in one mode, the highest collective transfer rate (without congestion) may be desired. To achieve the highest collective transfer rate, each of edge devices  210  may increase its data transfer rate until congestion occurs. Upon detecting congestion, an edge device may wait a randomly determined time and re-check for congestion. For example, a random number generator as known in the art may be used by an edge device in order to select the time for waiting after congestion has been detected. Edge devices  210  may use a random backoff scheme (e.g., the known in the art binary exponential backoff), for example, to avoid a situation whereby all or some of edge devices  210  check for congestion at the same time and/or increase or decrease their data transfer rate at the same time. 
     For example, to avoid a situation wherein, upon a new condition of network  215  (e.g., upgrade of infrastructure, termination of a transfer of a large object etc.), all of edge devices  210  increase their data transfer rate at the same time, an edge device may wait a random time period between determining a network is not congested and increasing its data transfer rate. For example, if all (or even only some of) edge devices  210  detect excess network bandwidth at the same time and, consequently, all increase their data transfer rate at the same time then the sudden increase in the collective data transfer rate may occur, causing congestion that may in turn result in all (or a large number of) edge devices  210  reducing their data transfer rate and so on such that, with respect to congestion and data transfer rate system  200  may fluctuate in an undesirable manner. 
     If an edge device detected congestion, waited a randomly selected time period and detected congestion again, the device may check whether its “Down” flag is set to true or false. If the “Down” flag is set to true, the edge device may reduce its data transfer rate. For example, if the edge device is uploading video and/or audio content captured by a connected camera, the edge device may decrease the frame rate of the camera and/or decrease the resolution of the camera such that the data transfer rate from the edge device is reduced. Other means of reducing data rate may be decreasing a bit rate of audio content, compressing data, limiting the amount of data sent over networks  215  and/or  230  per unit time as known in the art and the like. It will be understood that any methods or systems for reducing, increasing or controlling a data transfer rate may be used by edge devices  210  in order to increase or reduce data rate. 
     Reducing data transfer rate by an edge device as described herein may be in steps, or hops, e.g., based on a step or hop indicated in a “Rate modification step” configuration parameter or value of the edge device. A “Rate modification step” configuration parameter or value of an edge device included in edge devices  210  may be set or modified by master device  220 . For example, a “Rate modification step” may indicate a frame rate reduction number or percentage, a resolution reduction step or value, a step or hop defined by MBits/Sec and so on. A “Rate modification step” configuration parameter or value may be preset combination of frame rate and resolution of a camera such that changing (either increasing or decreasing) a data transfer rate by an edge device as described herein is achieved by changing both a frame rate and resolution of a camera connected to the edge device. 
     In some embodiments, a first “Rate modification step” value may govern reduction of transfer rate and a second “Rate modification step” value may govern an increase of transfer rate such that different steps may be used by edge devices  210  for increasing and decreasing of data transfer rates, 
     After reducing its data rate, an edge device may set its “Down” flag to false. When or if a “Down” flag of an edge device is set to false, the edge device may refrain from further reducing its data rate. If, after one or more of edge devices  210  reduced their data transfer rate congestion is still detected (e.g., on network  215 ) by other edge devices included in edge devices  210  then those other device will also reduce their data transfer rate and set their respective “Down” flags to false. If all of edge devices  210  detect congestion then eventually the “Down” flags of all edge devices  210  will be set to false. 
     Master device  220  may periodically or otherwise check the flags of edge devices  210  and may dynamically set or manipulate the flags of edge devices  210  such that controlling the data transfer rate by the plurality of edge devices is synchronized. A first synchronization aspect may be realized by the “Down” flag as described. For example, since an edge device may not reduce its data transfer rate after doing so and setting its “Down” flag to false, each of edge devices  210  will only decrease its data transfer rate once before its “Down” flag is set to true. Accordingly, all of edge devices  210  may decrease their data transfer rate once if congestion is detected. For example, a situation wherein one of edge devices  210  reduces its data transfer rate three times (or by three steps) while another one of edge devices  210  does not reduce its data transfer rate is avoided, accordingly, reduction of data transfer rate is synchronized. 
     As described, master device  220  may periodically or otherwise check the “Down” flags of all of edge devices  210 . If master device  220  determines that the “Down” flags of all edge devices  210  are set to false, master device  220  may set the “Down” flags of all edge devices  210  to true. Accordingly, a new round of synchronized data transfer rate reduction as described herein may commence. A synchronized data transfer rate reduction as described may be repeated any number of times, e.g., restart until network  215  is no longer congested. It is noted that a synchronized data transfer rate reduction may guarantee that a collective network bandwidth or a collective data transfer rate are equally allocated or distributed to edge devices and a situation where a single edge device is starved is avoided. 
     A system and method according to some embodiments of the invention may enable or include a synchronized data transfer rate increase. For example, if an edge device detects no congestion (e.g., determines its uplink is not congested and/or that excess bandwidth is available) it may check its “Up” flag. If an “Up” is set to true and no congestion is detected, an edge device may increase its data transfer rate by a step, e.g., as indicated by a “Rate modification step” configuration parameter related to increasing data transfer rate. After increasing its data transfer rate, an edge device may set its “Up” flag to false thus disabling itself from further increasing its data transfer rate. If no congestion is detected by other edge devices then they too will increase their data transfer rate, set their “Up” flags to true and avoid further increase of their respective data transfer rates. Master device  220  may periodically or otherwise check the “Up” flags of all of edge devices  210 . If master device  220  determines that the “UP” flags of all edge devices  210  are set to false, master device  220  may set the “Up” flags of all edge devices  210  to true. Accordingly, a new round of synchronized data transfer rate increase as described herein may commence. 
     It is noted that a synchronized data transfer rate increase may guarantee that a collective network bandwidth or a collective data transfer rate are equally allocated or distributed to edge devices and a situation where a single edge device keeps increasing its data transfer rate while another edge devices keeps detecting congestion is avoided. 
     For example, considering a first and second edge devices “A” and “B”, if both devices detect congestion on network  215 , device “A” may reduce its data transfer rate, set its “Down” flag to false and refrain from further decreasing its data transfer rate until master device  220  sets its “Down” flag to true. As long as the “Down” flag of edge device “B” is set to true, master device  220  may refrain from setting the “Down” of edge device “A” to true. Eventually, e.g., if network  215  remains congested, edge device “B” will reduce its data transfer rate and set its “Down” flag to false. Accordingly, a situation wherein edge device “A” will keep reducing or decreasing its data transfer rate while edge device “B” maintains its data transfer rate is avoided and therefore fairness is achieved. 
     Any method or system for determining a network is not congested (or determining a condition of excess bandwidth as known in the art) may be used. For example, in the case where data sent by edge devices  210  is the output of a camera, congestion or lack thereof, may be determined by monitoring the timestamps of frames of a video-stream being uploaded and comparing the timestamps to a real-time clock or to a rate at which the camera produces frames. 
     In a simplified configuration of a system or a method according to some embodiments of the invention, master device  220  may only set the “Up” and “Down” flags to true (e.g., when all “Up” and/or “Down” flags of all edge devices  210  are set to false) and edge devices  210  may only set their the “Up” and “Down” flags to false, e.g., after “hopping” to the next up or down preset or configured level, e.g., a level or hop indicated by a relevant “Rate modification step” parameter. 
     Some embodiments of systems and methods according to the invention ensure that a collective data transfer rate of edge devices  210  will not fluctuate around some specific value, e.g., in a case where the hops or steps of increasing or decreasing the data transfer rate are too large. It can be shown a system according to some embodiments of the invention will eventually stabilize to a collective data transfer rate that is beneath the value of the available collective data transfer rate such that the collective data transfer rate will not fluctuate. The time to reach a stabilized, non-fluctuating condition is a function of the number “N” of edge devices in system, where the number of fluctuations is of order N. 
     According to some embodiments of the invention, a master unit or device may periodically or upon detecting specific conditions, set a “Reset” flag to true on some or all of edge devices  210 . When or if an edge device detects or determines its “Rest” flag is set to true, the edge device may set its “Reset” flag to false and may further set its data transfer rate to a configured default value. For example, where applicable, the “Reset” flag may be similar to the “Up” flag described herein and a default data transfer rate value may be set by master unit  220  for each of edge devices  210 , e.g., by setting a value in a variable in a memory of an edge device as described, setting a value in a list accessible to all edge devices etc. When setting a “Reset” flag to true, master device  220  may also set other flags. For example, master device  220  may reset a system by setting the, the “Reset”, “Up” and “Down” flags of all edge devices  210  to true to cause a system to adjust or re-adjust its collective data transfer rate. 
     Below is an exemplary pseudo code that may be used by an edge device and a master device as described herein: 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 At each device do the following: 
               
               
                   
                   
                  if congestion has been detected do: 
               
               
                   
                   
                  if the “Down” flag is true do: 
               
               
                   
                   
                   wait random timeout 
               
               
                   
                   
                   re-check for congestion 
               
               
                   
                   
                   if still congested do: 
               
               
                   
                   
                     reduce the data transfer rate to the next preset level. 
               
               
                   
                   
                     set “Down” flag to false 
               
               
                   
                   
                    end 
               
               
                   
                   
                   end 
               
               
                   
                   
                  else if excess bandwidth is detected do: 
               
               
                   
                   
                   if the “Up” flag is true do: 
               
               
                   
                   
                    wait random timeout 
               
               
                   
                   
                    recheck excess bandwidth 
               
               
                   
                   
                    if there is still excess bandwidth do: 
               
               
                   
                   
                     increase the data transfer rate to the next preset level 
               
               
                   
                   
                     set “Up” flag to false 
               
               
                   
                   
                    end 
               
               
                   
                   
                   end 
               
               
                   
                   
                  end 
               
               
                   
                   
                  if device reset flag is true do: 
               
               
                   
                   
                   set data transfer rate to default preset 
               
               
                   
                   
                   set reset flag to false 
               
               
                   
                   
                  end 
               
               
                   
                   
                 At the master unit: 
               
               
                   
                   
                   if all “Up” flags are false do: 
               
               
                   
                   
                    set all “Up” flags to true 
               
               
                   
                   
                   end 
               
               
                   
                   
                   if all “Down” flags are false do: 
               
               
                   
                   
                    set all “Down” flags to true 
               
               
                   
                   
                   end 
               
               
                   
                   
               
            
           
         
       
     
     As described, various configurations or modes of operations of system  200  may be contemplated. For example, master device  220  may set a data transfer rate threshold for each of the plurality of edge devices  210  such that a cumulative data transfer rate of the plurality of edge devices  210  is according to a desired, requested or configured total data transfer rate. 
     For example, in one mode, the collective transfer rate (without congestion) of a site (e.g., a site including edge devices  210 ) may be set or configured to a specific value or threshold. For example, a user may set a total or collective upload rate for the set of edge devices  210  (viewed as a site) by sending a single message that contains the desired value to master device  220 . 
     Master device  220  may divide a received desired data transfer rate value by the number of edge devices  210  and set a data transfer rate value or flag for each of edge devices  210 . For example, a data transfer rate value may be set for an edge device by writing the value to a predefined location in a memory of the edge device, e.g., as described herein with reference to flags. Instead of, or in addition to, checking congestion as described herein, edge devices  210  may each periodically or continuously measure its data transfer rate and, if congestion is detected or the data transfer rate is above the data transfer rate value set for the device by the master device, the edge device may reduce or decrease its data transfer rate, e.g., synchronously with other edge devices as described herein. Master device  220  may prioritize one or more edge devices, for example, by setting their data transfer rate value higher than the value set for other devices. 
     As described, master device  220  may set a specific data transfer rate for a specific one of edge devices  210 . For example, based on an event, time of day or a request from a user or application, master device  220  may raise or lower a data transfer rate threshold for one of edge devices  210  or for a group of edge devices included in edge devices  210 . 
     For example, if, based on video analysis, a motion is detected in an area covered by a camera connected to an edge device, the edge device may send a message to master device  220  informing of the event. Based on an event such as motion detection, detection of abnormal heat (e.g., by a heat sensor) on entrance into a restricted area (e.g., by a door sensor), master device  220  may perform one or more actions. For example, based on an event, master device  220  may raise a data transfer rate threshold of an edge device, set the data transfer rate threshold to a high level, set a flag in the edge device causing the edge device to ignore congestion and attempt to upload as much data as possible and so on. For example, a “Priority” flag in all edge devices may be set to true or false by master device  220  and, when set to true, the flag may cause an edge device to override logic described herein and increase its data transfer rate to a maximum. Accordingly, a system and method may dynamically prioritize edge devices such that in case of need, a specific device may be granted as much network bandwidth as possible. 
     In order to prioritize an edge device or a set of edge devices, master device  220  may lower the data transfer rate threshold of other edge devices thus providing a prioritized device or set of devices with as much network bandwidth or data transfer rate. In other cases, master device  220  may set the “Up” flag of a prioritized device to true whenever it detects the device&#39;s “Up” flag is set to false. For example, to prioritize a specific one of edge devices  210 , master device  220  may continuously or periodically check the device&#39;s “Up” flag and set it to true if it is set to false thus effectively causing the prioritized device to freely increase its data transfer rate irrespective of limits imposed on other devices. In another embodiment, a data transfer rate threshold as described herein may be set to a high value for prioritized edge devices and low for other, non-prioritized edge devices. 
     Other means may be used. For example, a flag may be used to cause an edge device to ignore the “Up” and “Down” flags described herein. For example, an “Ignore” flag in each of edge devices  210  that may be set or cleared (e.g., using the values of “1” and “0”) by master device  220  may be checked by edge devices  210  before increasing or decreasing their data transfer rate and manipulating their “Up” and “Down” flags as described. For example, if an “Ignore” flag of an edge device is set (e.g., has the value of “1”), the edge device may ignore its “Up” and/or “Down” flags and may freely increase its data transfer rate as required, e.g., by increasing a resolution or frame rate of an attached camera to the maximal values. 
     In some embodiments, each of edge devices  210  has a “Priority” flag that may be set or cleared (e.g., set to “true” or “false” or “1” or “0”) by master device  220 . When an edge device is given priority, e.g., its priority flag is set to true, the edge device may set its bandwidth, upload rate or data transfer rate to a maximal (or other predefined) value and may refrain from testing for congestion or checking its “Up” and/or “Down” flags as long as the priority flag is set to true. As a result, less bandwidth may be available to other edge devices, and, since the other edge devices may continue to participate in the bandwidth control mechanism or scheme described herein, the other edge devices may adapt automatically to the new total available bandwidth. When the priority flag of the edge device is cleared, the edge device may revert to the operational mode described herein, e.g., control its data transfer rate according to its “Up” and “Down” flags as described. Upon resuming control of data transfer rate according to flags as described, an edge device may set its bandwidth to a minimum predefined setting and may increase its data transfer rate in steps as described herein. Accordingly, a collective data transfer rate may be gradually increased even when edge devices change their operational mode, move from one operational mode to another, or change the logic used for controlling their data transfer rate. 
     Reference is made to  FIG. 3 , showing a flow according to some embodiments of the present invention. As shown by block  310 , a plurality of edge devices may designate one of the plurality of the edge devices a master device. For example, an automated autonomous process carried out by edge devices  210  may designate edge device  220  as a master unit or master device as described. As shown by block  315 , controlling of a data transfer rate of an edge device may be done, by the edge device, based on at least one flag of the edge device set by the designated master device. For example, based on flags and configuration parameters set, changed or manipulated by master device  220 , each of edge devices  210  may increase or decrease its data transfer rate. As shown by block  320 , a designated master device may dynamically set at least one flag for each of the plurality of edge devices, such that controlling the data transfer rate by the plurality of edge devices is synchronized. For example, master device  220  may dynamically set or change flags in edge devices  210  such that controlling the collective or total data transfer of edge devices  210  is synchronized as described herein. 
     Unless explicitly stated, the method embodiments described herein are not constrained to a particular order in time or chronological sequence. Additionally, some of the described method elements may be skipped, or they may be repeated, during a sequence of operations of a method. 
     While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents may occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention. 
     Various embodiments have been presented. Each of these embodiments may of course include features from other embodiments presented, and embodiments not specifically described may include various features described herein.