The present invention relates generally to data communications and, more specifically, to a system and method for automated content distribution.
With the exponential increase of today's network usage, both in terms of total traffic and number of users, Internet Service Providers (ISPs) have to adapt very quickly in order to sustain the demand for new services. Users have access to a wide variety of client applications that utilize the Internet to gather information, such as web browsers, email clients, and peer-to-peer (P2P) file sharing software, among many others. Furthermore, these applications are constantly evolving, as well as the communication protocols they use. For instance, software applications may periodically have new versions or plug-in modules available for download.
In cellular and wireless systems, service operators or carriers may have access to special protocols for delivering marketing information about their products. For example, operators sometimes use Short Messaging Service (SMS) messages to notify cellular users of the existence of a new device or software application. A prior art method for distributing software involves using a mass SMS messaging campaign originated by the carrier. Another prior art method involves embedding a mechanism in client's application for automatically notifying the client about a software update and for delivering it to the client's device. Such mechanisms are based on querying information from a central server. Specifically, a small subset of functions within the client software performs a simple lookup on the central server using standard or private protocols to verify the existence of a new update. If a client update is available, the user is so notified and asked to install the update.
The present invention relates to a system and method for automated content distribution. The invention may, for example, perform a network traffic analysis for detecting software and protocol versions, maintain a list of software and protocol versions for which an update exists, notify the user of any available updates, and provide the new software or protocol, among other functions. The invention may also perform a marketing campaign individually targeted to network users.
In one exemplary embodiment, an automated content distribution system includes a detector module for intercepting a network communication and verifying whether content is available for a client, and a notification module coupled to the detector module for notifying the client that the content is available. In another exemplary embodiment, a method for automated content distribution includes intercepting a network communication, analyzing the network communication for determining whether content is available for a client, and notifying the client that the content is available.
It is an object of the present invention to provide automated software distribution over the network. It is another object of the present invention to provide real-time software distribution. It is a further object of the present invention to provide software distribution offline from the network. In addition, it is an object of the present invention to provide automated content distribution targeted to individual or groups of subscribers.
Detector module 115 is coupled between networks 110 and 130. In operation, detector module 115 intercepts network traffic that traverses the communication link between networks 110 and 130. Detector module 115 may, for example, make a copy of the network traffic so that network communications are not disturbed. Further, detector module 115 is responsible for performing packet inspection, preferably in real-time. Detector module 115 may include a protocol parser program for identifying a network subscriber and determining whether content is available for client 105. If content is available for a particular client 105, notifier module 120 may send a message targeted to that client 105. In one embodiment, the message may include the uniform resource locator (URL) of the content located in repository module 125, thereby allowing client 105 to download the content.
If a newer version of a given application or protocol is available, detector module 115 may signal the notification module 120 that user device 105 is equipped with an older version of the software application. Using information obtained from inspection of the network communication such as, for example, an internet protocol (IP) address, notification module 120 may notify client 105 of the existence of a software or protocol update. The combination of detector module 115 and notification module 120 may function as a packet analyzer. The packet analyzer may determine, for example, whether the client is already using a particular application or protocol, whether the software provisioning server is operational, whether the client device is able to receive notification in a particular format, and whether the client has already been notified about the application or protocol. When pre-determined conditions are met for a given client, the packet analyzer may send the client a notification.
In one embodiment, for example, notification over a GSM wireless network may be performed in the form of an SMS message. This notification may also contain an address of where the latest software application version is stored. In another embodiment, the SMS message may contain an URL pointing to the new software application's installer in repository module 125. As a person of ordinary skill in the art will recognize in light of this disclosure, detector module 115 may determine whether a new application or an application update is available to client 105. A load balancer module (not shown) may be used as a fail-safe module for bypassing software distribution system 100 so as to avoid network service interruption in the event that the software distribution system 100 fails.
In operation, software distribution system 100 acts as a node on the network path. In one embodiment, detector module 115 receives an IP packet and determines whether device 105 is running a software application partially based upon which port is being reached by the packet. Before sending an SMS notification to the client, detector module 115 may obtain the client's 105 mobile subscriber ISDN (MSISDN or phone number). This information may be requested from database 230 using the IP address encoded in the intercepted message. If there is no mobile phone number associated with the IP address, then the software distribution process may be aborted. If notification module 125 is able to get the user's mobile phone number, an installation notification may be sent to the client. For example, notification module 120 may send a push access protocol (PAP) message to push proxy gateway 225, which in turn may send an SMS notification to user 105 through network 110.
In order to avoid disturbing client 105 with multiple SMS notifications, notification module 120 may first determine whether that user has already received a notification. In one embodiment, a lookup is made on database 235 that contains notification information for device 105. Database 235 may contain, for example, a list of devices by international mobile equipment identification (IMEI), each device associated with a notification record. If detector module 115 determines that an SMS should be sent, notification module 120 may update database 235 accordingly. The notification record may include, for example, times and dates of prior notifications, preference settings whereby the user may decline to receive certain types of notification, and the like. Rules for determining whether an SMS should be sent to user 105 may be configurable by the service operator, and may be such that each device receives no more than a maximum number of SMS messages within a period of time.
An advantage of the present invention is that the initial optimization software distribution may be performed without a mass SMS mailing campaign. For example, instead of sending an SMS message to every device at once, users may be notified via SMS only when they are detected as not having the client optimization software installed on the device. This notification may contain a hyperlink that allows the user to download and install the client optimization software. Alternatively, notification step may be skipped and the software may be directly delivered. The invention may also handle, for example, users that have two devices for only one subscriber identity module (SIM) card since every device may automatically be updated or upgraded on an ongoing basis. Furthermore, as a person of ordinary skill in the art will recognize in light of this disclosure, the software distribution system 100 described herein may be used for distributing content, software or messages of any kind, including, for example, advertisements and marketing materials.
Upon receipt of the SMS message, users may be informed that they can download the content or software. To do so, they may, for example, follow a hyperlink included in the SMS message received. This link may either be accessed, for example, via a wireless application protocol (WAP) or hyper text transfer protocol (HTTP). When the user clicks on the link in the SMS message, device 105 may generate a WAP session protocol (WSP) or HTTP GET request. This request may start a provisioning script on repository web server 125 in order to identify the client device type so that the proper version of the software installer or content may be sent in response. Upon receipt of this installer, the device 105 browser may either launch the content or ask the user what action to take. If the provisioning script is unable to detect the client device type, a WAP or Web page may be sent to the user instead of the installer. This page may contain a list of supported device types, and the user may be prompted to select one, after which the proper installer or content version may be downloaded and installed. Alternatively the SMS message may itself embody the content to be delivered.
The present invention may be used in numerous applications, including, for example, in bandwidth optimization systems, particularly over wireless links. By lowering the bandwidth usage per user, a wireless network may support more traffic per user and/or more users. By the same token, better usage of the available bandwidth on a given link results in an enhanced user experience by lowering the transfer time for a given amount of data. In a first specific embodiment, there may be provided an apparatus residing on the network, which uses the data flow transported by the network to identify the capabilities of the application and protocols implemented on specific terminal devices and to apply selected data manipulation and reorganization techniques on the data flow to augment the efficiency of the use of the network resources, including the delivery of the data flow to the specific terminal devices. In a further specific embodiment, the apparatus residing on the network may further attempt to augment the efficiency of its performance and capabilities enhancements by using automated transparent and semi-transparent electronic provisioning techniques to deliver and install a software agent to specific terminal devices. The software agent may implement new capabilities on the specific terminal devices on which it is installed, thus enabling performance enhancements that may optionally rely on the presence of apparatus residing on the network. A bandwidth optimization system is depicted with respect to
Optimization Server Agent Node Clientless (OSAN-CL) 505 may provide improvement over data transmission in a manner that any user's protocol stack can understand the data without requiring a Client Agent Node (CAN) application. In order to augment the efficiency of the transmission, the OSAN-CL 505 may interpret a list of predefined standard protocol stacks, thereby discovering the user's protocol capabilities. Data flowing to the user may then be post-processed to utilize all capabilities of client 105.
Optimization Server Agent Node Client-based (OSAN-C) 510, similarly to OSAN-CL 505, may improve the data transmission efficiency between client 105 and the server (not shown). However, OSAN-C 510 may require the user to install a CAN application, which is able to interpret a list of predefined protocol stacks. Using an automatic, transparent, and protocol specific mechanism described in more detail below, the CAN application may detect the presence of the OSAN-C on the communication path, and vice-versa. A combination of OSAN-C 105 CAN-enabled device may make use of non-standard but more bandwidth efficient protocols.
Provisioning Server Agent node (PSAN) 515 may receive a notification from the OSAN-CL 505 for each new user connection with the server. This notification may include a client's 105 user ID information. Over a TCP/IP network, for example, the user ID information may be the user's IP address. PSAN 515 may also gather more specific information on the user, especially pertaining to the hardware or software being used by client 105. Using a transparent or semi-transparent approach, PSAN 515 may inform users and distribute the CAN application. When deployed, PSAN 515 server may enhance the network capacity by inviting users to install the CAN application.
Provisioning discovery server 605 may be an IP-transparent node which resides on the network in the critical path of data flow. In some networks, a suitable server or node may already be located on the critical path and such server may be used as provisioning discovery server 605. Provisioning discovery server 605 may analyze packets sent by user device 105 on wireless network 110, and may also identify the capabilities of the applications and protocols implemented on device 105. For example, provisioning discovery server 605 may detect that device 105 is using a particular version of an Internet browser. When a particular application or protocol is detected, provisioning discovery server 605 may redirect the flow to optimization server 610.
Optimization server 610 may perform optimization techniques as a function of the applications and protocols detected by provisioning discovery server 605. For example, if a WAP protocol is detected, optimization server 610 may be able to concatenate packets destined for a WAP-enabled user device. On the other hand, if a web browser is detected, web pages may be compressed to different degrees, depending on the browser type. These are examples of core network optimization, which is characterized by there being no logic added to the user device, all optimization being conducted within optimization server 610.
Provisioning discovery server 605 may also detect when user device 105 has the potential to support a bandwidth optimization technique (whether it be stand-alone or client-server based). By way of example, the allgo*Mobile™ series of products from Cilys™ provides a variety of stand-alone and client-server optimization solutions, using data compression to optimize data transmission over a low bit rate link, such as, for example, GPRS and 1xRTT. The operation of bandwidth optimization node 600 is described in more detail below in the specific context of the allgo*Mobile™ solution. However, a person of ordinary skill in the art will recognize in light of this disclosure that the scope of the present invention is not limited to any particular bandwidth optimization technique. Furthermore, it will be understood by those of ordinary skill in the art that the present invention is not limited to the exemplary allgo*Mobile™ embodiment referenced herein. The term “provisioning,” as used herein, includes a way of deploying content to users over a network. The term “provisioning” also includes allowing a new installation of allgo*Mobile™ solution on an operator's network.
Provisioning discovery server 605 may analyze each packet sent by users on the wireless network and determine whether device 105 has allgo*Mobile™ installed. Provisioning discovery server 605 is preferably located in the critical path of the traffic flow of the operator's network. If provisioning discovery server 605 finds that device 105 is not currently optimized by allgo*Mobile™, a user datagram protocol (UDP) packet is sent to a transparent proxy server 615 (provisioning server), which is not connected in the critical path of data flow. For each packets received from the allgo*mobile servers, provisioning discovery server 605 may replace a source IP with a real client IP contained in the IP header option. Thus, each UDP packet or transmission control protocol (TCP) with TCP synchronization packet (SYN) flag up received from a user that has not been NATed by optimization server 610 may generate a UDP packet to the transparent proxy server 615. This UDP packet containing the source IP address may then be sent over a cross-linked interface to provisioning server 615. All manipulation of the IP address may be performed by provisioning server 615. For example, provisioning server 615 may read the information in the UDP packet (e.g., device IP address), and send a SMS notification message to device 105 with allgo*Mobile™ download information.
IMEI database 660 may be used to store the MSISDN and/or state values, and may contain, for example, the following fields for each entry:
In one embodiment, IMEI database 660 may use a MySQL system. In another embodiment, IMEI database 660 may be a relational database method (RDBM) or an indexed sequential access database method (ISAM). Preferably, IMEI database 660 may be accessed via key search.
In this example, each pair {x,y} in the vector is indexed by a state, i.e., distrib_vec[i] gives the pair {x,y} for the state i. In state zero, one SMS message may be sent. In state one, an SMS message may be sent everyday for two days. In state two, an SMS message can be sent every 7 days, but only once. Finally, at state 3, a SMS can be sent every 2 weeks, without further limitation.
In step 1405, SMS sender module 665 reads at least one SMS parameter from IMEI database 660. In step 1410, if the user has already received the maximum number of SMS messages allowed control passes to step 1440 and SMS sender module 665 does not send an SMS message. In step 1415, if the number of SMS sent in a given state of the distribution vector is zero, SMS sender module 665 sends an SMS message to the user in step 1435 by notifying PPG 225. In step 1420, if the number of SMS sent is larger than the number of SMS to send within a given state, the control passes to step 1425, where the state is changed and the counter of the number of SMS sent reset. Else, the control passes to step 1430, where the counter of the number of SMS sent is incremented.
It will thus be appreciated from the description of the bandwidth optimization system depicted in
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.
This application claims priority to U.S. Provisional Patent Application No. 60/579,646, filed Jun. 16, 2004, the disclosure of which is hereby incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60579646 | Jun 2004 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11154273 | Jun 2005 | US |
Child | 13671407 | US |