This application relates to data management for providing data services and in particular to a dynamic data service seeking application and related network configuration.
Conventional data network environments provide access to data services, bandwidth services, Internet access, etc., via a data service provider and a corresponding network infrastructure to distribute such services accordingly. Well known protocols, such as Transmission Control Protocol (TCP) provide a foundation for communication among network devices. Those skilled in the art will appreciate that various network protocols can be used to transmit and receive data on such networks. However, TCP is a common communication protocol which operates via a three-way handshake to ensure the communication status of the communication devices. For example, a device may transmit a request and receive an acknowledgment before transmitting a response acknowledgment to verify a communication channel.
In order to establish a communication channel between network devices, the TCP protocol is fundamental to achieving a successful connection. However, the mere fact that a channel is setup during an initial communication procedure does not ensure that the communication will be maintained by correcting network failures, loss of data connections, bandwidth degradation, etc. These factors, as well as others, all make the process of sending and receiving data cumbersome, inefficient or impossible. For example, a communication failure may be caused by a loss in available bandwidth. In this event, a computing device may experience a tremendous delay which could be several seconds, minutes or longer prior to any action being taken by an application environment to at least provide a confirmation that a failure has occurred.
Also, the likelihood of a data service failure resulting in an automated data connection repair operation is unlikely as the usual course of action is to notify technical assistance via a notification message or other communication effort. These types of failures are seldom self-repairing or efficient at self-repairing efforts. A network failure is generally a situation that will require an existing data service provider to repair itself or the failure may continue indefinitely.
Summary of the Application
One example embodiment may provide a method that includes at least one of establishing a first data session between a client device and a first data service provider, monitoring the data session for a loss of communication data for a predetermined period of time, identifying the predetermined period of time has expired without data session activity, terminating the first data session, retrieving data session preferences from memory, and establishing a second data session between the client device and a second data service provider based on the data session preferences.
Another example embodiment may provide a method that includes at least one of establishing a first data session between a client device and a first data service provider via a first interface of the client device, transmitting an echo request to a known reference point server, initiating a timer to begin responsive to the echo request being transmitted, and determining whether to restart a connection of the first data session and change to a second data service provider.
Still another example embodiment may provide a method that includes at least one of establishing a data session between a client device and a first data service provider via a first interface of the client device, receiving a portion of a message, determining whether the message is complete, initiating a timer, and identifying a predetermined period of time has expired without a response being received to the echo message.
Still yet a further example embodiment may provide a method that includes at least one of initiating a static route from a first interface of a client device to a destination device, transmitting an echo request to the destination device over a first data connection, determining whether to mark the interface as being up or down based on a result of the echo request, and assigning the interface to a gateway device.
Yet a further example embodiment may provide an apparatus comprising at least one of a transmitter configured to establish a first data session between a client device and a first data service provider, and a processor configured to provide at least one of monitor the data session for a loss of communication data for a predetermined period of time, identify the predetermined period of time has expired without data session activity, terminate the first data session, retrieve data session preferences from memory, and establish a second data session between the client device and a second data service provider based on the data session preferences.
Still another example embodiment may provide a non-transitory computer readable storage medium configured to store instructions that when executed cause a processor to perform at least one of establishing a first data session between a client device and a first data service provider, monitoring the data session for a loss of communication data for a predetermined period of time, identifying the predetermined period of time has expired without data session activity, terminating the first data session, retrieving data session preferences from memory; and establishing a second data session between the client device and a second data service provider based on the data session preferences.
It will be readily understood that the components of the present application, as generally described and illustrated in the figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following detailed description of the embodiments of a method, apparatus, and system, as represented in the attached figures, is not intended to limit the scope of the application as claimed, but is merely representative of selected embodiments of the application.
The features, structures, or characteristics of the application described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, the usage of the phrases “example embodiments”, “some embodiments”, or other similar language, throughout this specification refers to the fact that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment of the present application. Thus, appearances of the phrases “example embodiments”, “in some embodiments”, “in other embodiments”, or other similar language, throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
In addition, while the term “message” has been used in the description of embodiments of the present application, the application may be applied to many types of network data, such as, packet, frame, datagram, etc. For purposes of this application, the term “message” also includes packet, frame, datagram, and any equivalents thereof. Furthermore, while certain types of messages and signaling are depicted in exemplary embodiments of the application, the application is not limited to a certain type of message, and the application is not limited to a certain type of signaling.
According to example embodiments, the TCP communication protocol generally relies on previous round-trip information when attempting to maintain an active connection. In operation, TCP sends retransmissions in an attempt to receive an acknowledgement or confirmation response. The time lapse before a TCP-based protocol network can identify a network connection has failed is generally 10-12 minutes. The practicality of such a configuration is not suitable for many network environments that require immediate access to an alternative source of data communications.
The example embodiments provide an add-on service that can be utilized with existing network protocol infrastructures of the application, transport, Internet and link layers including but not limited to TCP, UDP, BGP, DHCP, DNS, FTP, HTTP, IMAP, LDAP, MGCP, NNTP, NTP, POP, ONC/RPC, RTP, RTSP, RIP, SIP, SMTP, SNMP, SSH, Telnet, TLS/SSL, XMPP, DCCP, SCTP, RSVP, IP, IPv4, IPv6, ICMP, ICMPv6, ECN, IGMP, IPsec, ARP, NDP, OSPF, L2TP, PPP, MAC, Ethernet, DSL, ISDN, FDDI, etc.
In operation, a lost connection as determined by a failure to receive a confirmation acknowledgement or other notification message from another device in an established session may be detected promptly without unnecessary delay. This failed condition may be identified within a few seconds and an attempt to recover by reconnecting, restarting the interface, rebooting the device, etc. may be performed in succession beginning just seconds after the failed condition. The time period used to identify a failed condition may be one of a plurality of threshold time limits (i.e., 5 seconds, 8 seconds, 10 seconds, 12 seconds, 15 seconds, 30 seconds, or more, etc.).
The echo server may be any well-known server, such as a reliable web site server(s), that can be used as a reference point for ongoing monitoring and network cost analysis. For example, during an active session between the client device 112 and data provider II 124, a monitoring service application may transmit an echo message to the well-known echo server 130, or any other point of reference server. The echo message may be used as a reference to identify latency, bandwidth degradation with one data provider and a more optimal communication scenario with another data provider.
Referring again to
The number of reconnect attempts ensures that the connection tests are accurate since the network may be congested and some packets may be dropped, and thus several attempts will provide a more reliable result and reduce false positives of a potentially failed network. The process restart may include soliciting another data connection via a better path, such as via different hops so new connections are not data throttled as much as some others.
In operation, a message may be delivered by several packets. For example, messages may be several megabytes. If a traditional TCP connection is used without the present application and the connection fails, it could take many minutes for all the retransmissions and timeouts to indicate a failure has occurred. If the timer is triggered, this indicates that the message was not delivered within the expected time. As a result, if the message was not delivered on time, the connection is dropped and the resources are released.
Referring again to
Next, a determination may be made as to whether an interface needs to be changed 532 and if not then a next interface may be checked and tested 554. If so, an ‘up’ interface may be identified and selected for a connection status 544. A determination as to whether the interface is an up interface may be performed 546 and if so then that interface will be assigned to the gateway 552 and the service may be restarted accordingly with the new interface assigned. Similarly, if the up interface is identified as a most preferred up interface than it will be assigned accordingly 556.
One example embodiment may include the system 700 establishing a first data session between a client device and a first data service provider, monitoring the data session for a loss of communication data for a predetermined period of time, identifying the predetermined period of time has expired without data session activity as determined by the counter and terminating the first data session as a result. Also, data session preferences may be retrieved from memory 740 and establishing a second data session between the client device and a second data service provider based on the data session preferences.
The first data session may be established via a first port of the client device and the second data session may be established via a second port of the client device. The predetermined period of time may expire without data session activity by identifying that no acknowledgment message was received at the client device within the predetermined period of time. A first data session preference for connection reliability may be identified from the stored preferences of the client device and a second data session preference for connection cost may also be applied. The second data service provider may be selected based on the first data session preference and the second data session preference. The first data service provider may include a local WIFI connection and/or a wired connection and the second data service provider may include a 4G cellular data provider and/or a satellite data provider.
At least one data packet may be sent to the first data service provider to identify network activity, a timer may then be initiated responsive to transmitting the at least one data packet. Once the timer has expired, and it is determined that no acknowledgment was received within the predetermined period of time, a request to initiate a data session with the second data service provider may be transmitted to setup a new session. Also, a message may be transmitted to an echo server to identify a candidate data service provider and an echo response message may be received. As a result, the candidate data service provider is selected as the second data service provider based on the echo response message when the first data service provider fails to provide data services to the client device.
According to another example embodiment, a first data session is established between a client device and a first data service provider via a first interface of the client device, next an echo request is transmitted to a known reference point server, and a timer is initiated to begin responsive to the echo request being transmitted, and a determination is made as to whether to restart a connection of the first data session and change to a second data service provider. Next, a predetermined period of time is identified as having been expired without a response being received to the echo message. The testing may be checked to determine whether a threshold number of echo message attempts have been performed. When the threshold number of echo message attempts have been performed, the first data session may be terminated since the connection is not operating. Then, an attempt to establish a second data session via a second data service provider different from the first data service provider can be performed. A data session request message is then transmitted via a second interface of the client device and a confirmation from the second data service provider is received. As a result, a connection with the second data service provider via the second interface is established. The first data service provider may include a local WIFI connection and/or a wired connection and the second data service provider may include a 4G cellular data provider and a satellite data provider or vice versa. The predetermined period of time may be less than an amount of time required by a protocol used during the first data session to determine whether a network communication failure has occurred.
According to another example embodiment, a data session may be established between a client device and a first data service provider via a first interface of the client device. Next, a portion of a message may be identified as having been received. The message may be examined to determine whether the message is complete and a timer is then initiated. Next, a predetermined period of time is identified as having been expired without a response being received to the echo message. The message is determined as not complete when a beginning of the message was received and the message is not complete. A timer is initiated for a predetermined period of time and when the timer has expired the session is closed. In the event that the message is identified as being complete then the timer is reset and a message verification is identified as having failed and that session is closed. Next, an attempt to establish a second data session via a second data service provider different from the first data service provider is performed by transmitting a data session request message via a second interface of the client device and receiving a confirmation from the second data service provider. As a result, a connection with the second data service provider is established via the second interface. The predetermined period of time is less than an amount of time required by a protocol used during the first data session to determine whether a network communication failure has occurred. For instance, the protocol may timeout when no response is received after several minutes, however, the timer is set to a predetermined period of second that is shorter than the protocol timeout event.
According to another example embodiment, a static route is setup from a first interface of a client device to a destination device and an echo request is transmitted to the destination device over a first data connection. A determination is then made whether to mark the interface as being “up” or “down” based on a result of the echo request, and the interface is assigned to a gateway device. The static route is setup via a tested interface and additional interfaces of the client device are tested to determine whether the additional interfaces are up or down as well. During the interface audit procedure, the network connections may be tested for data network support by transmitting a test packet and receiving a response prior to identifying the interface as up or down. A most preferred interface is also selected based on the interfaces that are up and preferences associated with the client device regarding reliability, cost, availability and type of connection. The most preferred interface for a data session is setup as well based on the preferences. In the event that all interfaces are designated as being down, the client device is rebooted. The preferences associated with the client device include at least one of a convenience preference, a cost preference, an availability preference, and a reliability preference. A state of an “up” interface is modified responsive to identifying at least one “up” interface of the client device. During this process, a most preferred interface that is not being utilized by the client device and which is up may be designated as the active interface and an active session may be closed and a new session may be initiated via the most preferred interface.
During the network monitoring configuration the rebooting of the client device is generally performed only after all the interface testing yields a negative result. For example, if a client device interface is down, the initial action is to reset that interface and monitor again to identify whether the problem is resolved. A reboot is performed after all the interfaces on the client device have failed after one or more sequential resets and monitor operations.
The application that is installed on the client device, the network server, etc., which monitors the connectivity is an application may be a plug-in to a browser, a piggyback service, etc. The service may be an application and/or a special service for managing connections for other applications by operating as a local TCP proxy. Additionally, the service may be a software program or a software library (*.so, *.a, *.dll), which can be used by an application as a plug-in or as part of application functionality linked in a compile function (static library) or a run time (dynamic library).
The ‘ECHO’ message may be sent to the echo server from the perspective of the various data providers via the user device. For example, if the client device has four ports for WIFI, 4G1, 4G2 and SAT, respectively, then during an active session with the WIFI network via port one, for example, the echo messages are sent from each of the ports of the client device to ensure quality and identify which connections are best/worse, etc. Client monitoring happens on the application level as part of the application or as a linked library, or shared proxy service. The client monitoring manages connections and perform monitoring for a specific application. Failures of the application do not affect other similar applications operating on the same platform and using similar connection management/monitoring functionality.
Network monitoring operates as a special service on the system level. The results of such monitoring affect the applications operating on the same platform. During the monitoring and echo procedures, there may be more than one data connection serving as a backup connection(s) on the application level. Modifications to the operating system make it possible to maintain connections via different providers simultaneously. In other words, the platform may be operating as a router with dynamic port-route persistence rules. The ‘destination’ may be the ‘well known’ server. When the static routes are configured, the target IP address or network is the destination.
The operations of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a computer program executed by a processor, or in a combination of the two. A computer program may be embodied on a computer readable medium, such as a storage medium. For example, a computer program may reside in random access memory (“RAM”), flash memory, read-only memory (“ROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), registers, hard disk, a removable disk, a compact disk read-only memory (“CD-ROM”), or any other form of storage medium known in the art.
An exemplary storage medium may be coupled to the processor such that the processor may read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an application specific integrated circuit (“ASIC”). In the alternative, the processor and the storage medium may reside as discrete components. For example
As illustrated in
One example method of operation of the data capturing and sensor configuration may include establishing a first connection with a second device over a first network, receiving a first data packet of a packet stream from the second device over the first network in the first connection, calculating a first disconnect point based on any of a throttling response/bandwidth cap threshold/usage rate/congestion rate, etc., of the first network. Next, the first connection is disconnected with the second device at or before the first disconnect point, and a second connection with the second device over the first network is established, and a second data packet of the packet stream is received from the second device over the first network in the second connection.
Another example embodiment may include managing a network connection provided by a network carrier by establishing one or more test connections with a second device over a first network provided by a first network carrier, identifying one or more terminations of the one or more test connections initiated by the first network carrier due to the first device exceeding a bandwidth cap set by the first network carrier, determining a connection time limit based on the one or more terminations of the one or more test connections, establishing a first connection with the second device over the first network, disconnecting the first connection with the second device at or before the connection time limit, and establishing a second connection with the second device over the first network.
An example embodiment for accessing a data stream may include receiving a request for the data stream from a client device, establishing a connection with a second device to receive the data stream over a network, determining a connection time limit based on a throttling response of the network, disconnecting the connection with the second device at or before the connection time limit, and re-establishing the connection with the second device at or before a disconnection time limit after disconnecting the connection with the second device.
The first network may be a cellular network. The first data packet and the second data packet may include video image frames. The packet stream may be a video stream. Also, the first device may be a server and the second device may be an image capture device. The first device may also be a client device while the second device is a server. In operation, the first data packet may be stitched and compiled with the second data packet into a stitched/compiled data file, and the stitched/compiled data file may be transmitted to a client device requesting the stitched/compiled data file.
The second connection may be disconnected with the second device at or before a second disconnect point, so the second disconnect point is different than the first disconnect point. Next, the first connection is established with the second device through a first modem of the server, and the second connection is established with the second device through a second modem of the server, and the first modem has a different IP address than the second modem.
Additionally, a third connection may be established with the second device over a second network, and a third data packet of the packet stream may be received from the second device over the second network in the third connection. The first connection may have a first connection identifier assigned by the first network, the second connection may have a second connection identifier assigned by the first network, and the first connection identifier is different from the second connection identifier. The first disconnect point is between around 1 millisecond and around 30 milliseconds after a commencement of the first connection. In other embodiments, the first disconnect point can be between around 1 millisecond and greater than 30 milliseconds. The first connection may have a bandwidth cap of X megabits per second (Mbps—where X is between around 0.5 and around 2 Mbps). In another example, the first connection period may be varied based on a traffic-shaping algorithm of the first network. Also, the packet stream may be a high-definition or standard video stream.
According to another example embodiment, a security system may include a first sensor configured to sense a first data at a first time and a second data at a second time, a first media capture device, so the first media capture device is configured to capture a first packet when the first data is different than the second data, and a transmitter configured to transmit the first packet to a server. Additionally, the first sensor may be configured to measure temperature or light intensity. Moreover, the first media capture device is configured to be angled relative to the transmitter and the transmitter is configured to transmit the first packet to a mobile device and the sensor is coupled to the first media capture device. The sensor may be separate from the first media capture device, and the sensor is configured to wirelessly communicate with the first media capture device via BLUETOOTH.
A second media capture device may also be included which may be angled and having a second sensor. The configuration may also include a light emitter, so the light emitter is coupled to the first media capture device, and the light emitter faces in the same direction as the first media capture device. The light emitter is configured to emit light when the first media capture device captures the first packet, and the light is configured to be directed in the direction of the first sensor. The light emitter is configured to emit light when the first data is different than the second data, and the light is configured to be directed in the direction of the first sensor.
According to one example method of operation, a method for surveillance may include sensing a first data by a first sensor, transmitting the first data to an image capture device sensing a second data by the first sensor, transmitting the second data to the image capture device, capturing a first packet by the image capture device when the second data is different than the first data, and transmitting the first packet to a server. The first sensor may sense temperature. The first data is transmitted to an image capture device via a wireless path and the first packet is transmitted to the server wirelessly. The first packet is transmitted from the server to a mobile device. In operation, a light may light a target area when the second data is different than the first data. A first data may be received by a media capture system from a first sensor and a second data may be received by the media capture system from the first sensor. The first data can then be compared to the second data and a first packet may be captured by the media capture system when the second data is different than the first data. As a result, the first packet is transmitted by the media capture system to a server.
Although an exemplary embodiment of the system, method, and computer readable medium of the present application has been illustrated in the accompanied drawings and described in the foregoing detailed description, it will be understood that the application is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications, and substitutions without departing from the spirit or scope of the application as set forth and defined by the following claims. For example, the capabilities of the system of
One skilled in the art will appreciate that a “system” could be embodied as a personal computer, a server, a console, a personal digital assistant (PDA), a cell phone, a tablet computing device, a smartphone or any other suitable computing device, or combination of devices. Presenting the above-described functions as being performed by a “system” is not intended to limit the scope of the present application in any way, but is intended to provide one example of many embodiments of the present application. Indeed, methods, systems and apparatuses disclosed herein may be implemented in localized and distributed forms consistent with computing technology.
It should be noted that some of the system features described in this specification have been presented as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom very large scale integration (VLSI) circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, graphics processing units, or the like.
A module may also be at least partially implemented in software for execution by various types of processors. An identified unit of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions that may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module. Further, modules may be stored on a computer-readable medium, which may be, for instance, a hard disk drive, flash device, random access memory (RAM), tape, or any other such medium used to store data.
Indeed, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.
It will be readily understood that the components of the application, as generally described and illustrated in the figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the detailed description of the embodiments is not intended to limit the scope of the application as claimed, but is merely representative of selected embodiments of the application.
One having ordinary skill in the art will readily understand that the application as discussed above may be practiced with steps in a different order, and/or with hardware elements in configurations that are different than those which are disclosed. Therefore, although the application has been described based upon these preferred embodiments, it would be apparent to those of skill in the art that certain modifications, variations, and alternative constructions would be apparent, while remaining within the spirit and scope of the application. In order to determine the metes and bounds of the application, therefore, reference should be made to the appended claims.
While preferred embodiments of the present application have been described, it is to be understood that the embodiments described are illustrative only and the scope of the application is to be defined solely by the appended claims when considered with a full range of equivalents and modifications (e.g., protocols, hardware devices, software platforms etc.) thereto.
This application claims the benefit of U.S. Provisional Patent Application No. 62/054,858, filed on Sep. 24, 2014 and entitled REAL-TIME OBJECT TRACKING PROTOCOL. The subject matter of this application is hereby incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62054858 | Sep 2014 | US |