US20090094378A1 - Software Deployment Using Client Location - Google Patents

Software Deployment Using Client Location Download PDF

Info

Publication number
US20090094378A1
US20090094378A1 US11/869,104 US86910407A US2009094378A1 US 20090094378 A1 US20090094378 A1 US 20090094378A1 US 86910407 A US86910407 A US 86910407A US 2009094378 A1 US2009094378 A1 US 2009094378A1
Authority
US
United States
Prior art keywords
distribution
fraction
group
client devices
software distribution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US11/869,104
Other versions
US8756318B1 (en
Inventor
Edward Reus
Jianbo Hou
Jefferson Davis
Jimin Li
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/869,104 priority Critical patent/US8756318B1/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DAVIS, JEFFERSON, HOU, JIANBO, LI, JIMIN, REUS, EDWARD
Publication of US20090094378A1 publication Critical patent/US20090094378A1/en
Application granted granted Critical
Publication of US8756318B1 publication Critical patent/US8756318B1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Definitions

  • Distribution of software across the Internet can take a large toll on Internet bandwidth, especially when many clients download software at the same time.
  • software such as updates to various applications and operating systems that may have hundreds of millions of client devices that each download many megabytes or even gigabytes of data
  • the sheer volume of downloaded data may use an extremely large amount of Internet bandwidth.
  • a software distribution mechanism evaluates network addresses of requesting clients to determine a location for each client.
  • the clients from a particular location are grouped together and a fraction of those clients in a particular group are recipients of a software distribution.
  • the faction is adjusted to enable more or fewer clients to download, thus effectively throttling the amount of bandwidth consumed by a mass distribution event.
  • the fraction may be adjusted for particular geographical locations and the time of day to make more effective use of network bandwidth.
  • FIG. 1 is a diagram illustration of an embodiment showing a system for software distribution.
  • FIG. 2 is a flowchart illustration of an embodiment showing a method for grouping software requesters.
  • FIG. 3 is a flowchart illustration of an embodiment showing a method for distributing software based on policies.
  • FIG. 4 is a flowchart illustration of an embodiment showing a method for distributing software.
  • a software distribution system may resolve a geographic location from a network address and use the geographic location in metering or controlling software distributions to client devices.
  • Each client or requester may be able to receive a software distribution based on policies applied to groups established for various geographic locations.
  • a worldwide software distribution may be performed by grouping each client into groups defined by continents or time zones. During the course of a day, those clients in a nighttime location may be permitted to receive a software distribution while clients in a daytime location may be restricted from the distribution. Such an embodiment may make use of the fact that bandwidth is more available during nighttime than daytime.
  • Each group may have a mechanism for permitting distribution to a fraction of the client devices.
  • One mechanism may be to assign a random number to each client device, producing a random distribution of devices.
  • An allocation fraction may be set for the group that defines the fraction of devices that may receive the distribution. The allocation fraction may be used to select those devices with a random number below a certain number and commence the distribution. Over time, the allocation fraction may be increased so that each group member may eventually receive the distribution.
  • the allocation mechanism may be capable of increasing and decreasing the number of clients being serviced, enabling dynamic control over the distribution.
  • a software distribution may be any type of computer data that may be distributed to client devices. For example, operating system and application updates may be periodically distributed to client devices.
  • a software distribution may be in the form of data, while in other instances, a software distribution may be in the form of executable code.
  • Some embodiments may have an executable installer on each client that accepts the distribution and installs the distribution on the client device.
  • the software distribution may be performed in many different manners.
  • a client device may download a distribution in a pull-type arrangement.
  • a server device may push a distribution to the client device.
  • Other systems may use other mechanisms, protocols, and techniques for transferring a software distribution from servers to clients.
  • the subject matter may be embodied as devices, systems, methods, and/or computer program products. Accordingly, some or all of the subject matter may be embodied in hardware and/or in software (including firmware, resident software, micro-code, state machines, gate arrays, etc.) Furthermore, the subject matter may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system.
  • a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium.
  • computer readable media may comprise computer storage media and communication media.
  • Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by an instruction execution system.
  • the computer-usable or computer-readable medium could be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, of otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
  • the embodiment may comprise program modules, executed by one or more systems, computers, or other devices.
  • program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • functionality of the program modules may be combined or distributed as desired in various embodiments.
  • FIG. 1 is a diagram of an embodiment 100 showing a system for software distribution.
  • Embodiment 100 is a functional illustration of various components that may make up a software distribution system.
  • several of the functional aspects illustrated may be performed on a single device having a processor and adapted to perform each function.
  • some of the individual functional aspects may be performed by different devices.
  • Some such embodiments may have several devices that are used to perform one specific function or a subset of a function. For example, a cluster of server devices may be used to perform one specific function.
  • the diagram of FIG. 1 illustrates functional components of a system.
  • the component may be a hardware component, a software component, or a combination of hardware and software. Some of the components may be application level software, while other components may be operating system level components.
  • the connection of one component to another may be a close connection where two or more components are operating on a single hardware platform. In other cases, the connections may be made over network connections spanning long distances.
  • Each embodiment may use different hardware, software, and interconnection architectures to achieve the various components described.
  • Embodiment 100 illustrates a system for software distribution. After an initial connection, a client's address may be used to determine a geographic location for the client. Based on the geographic location, the client may be assigned to various local group distribution managers that may be servers which perform the software distribution transfer to the client devices.
  • the location resolver 116 may use an address database 117 to determine a geographic location 119 of the individual clients. Various embodiments may be able to resolve a client's geographic location with different resolutions. In some cases, the location resolver 116 may be able to resolve a location down to a country or broad geographic region. In other cases, the location resolver 116 may be able to resolve the location down to a state, city, or municipality. In still other cases, the location resolver 116 may be able to identify a client's internet service provider and an approximate street address.
  • Various mechanisms may be used to resolve a location from an address.
  • a gross location may be used, such as determining a continent on which an address may be located
  • the address database 117 may be compressed or summarized so that fast and efficient lookups may be performed.
  • a more detailed address database 117 may be used.
  • Some embodiments may be used for metering bandwidth and server capacity for a distribution server.
  • the location determination may be approximated with enough accuracy so that the distribution server is not overloaded with requests or so that bandwidth is consumed in a controlled manner.
  • a server located in North America may be configured to perform software distribution during periods of low network traffic, such as between midnight and 5:00 am Eastern time.
  • periods of low network traffic such as between midnight and 5:00 am Eastern time.
  • the location may be determined to be somewhere within North America and the request may be routed to a distribution server within North America.
  • the location resolver 116 may incorrectly determine that a client device is within North America when the client device is actually in Europe or some other geographic region. For those devices with incorrectly determined location, the distributed software may be routed from the North American server and reach the device across an intercontinental connection. In another instance, an IP subnet may fall across states or even country borders. When the location resolver 116 determines that an address is within the subnet, the location resolver 116 may or may not be able to determine on which side of the border the actual device resides. In many embodiments, the inaccuracy of location detection may be offset by the speed in which location may be determined.
  • Some embodiments may use multiple databases for resolving a location for an address.
  • a first database may be used to locate an approximate location, such as a continent, country, or state.
  • a second group of databases may be used to locate a more precise location where the second databases may be tailored for the specific continent, country, or states.
  • the network address may also indicate a specific internet service provider. Based on the unique characteristics of the internet service provider, a software distribution may be packaged or transmitted in a specific way that may optimize the characteristics of the specific internet service provider.
  • the network address may include knowledge about the speed of the connection, such as a low speed dial-in connection, a high bandwidth fiber optic connection, a wireless connection, cable modem, digital subscriber line (DSL) connection, or other type of connection. Such knowledge may be used to estimate the data transmission time and approximate the bandwidth requirements of portions of a network.
  • a distribution engine 118 may assign the client to one of several local group distribution managers 120 or 122 .
  • the local group distribution managers 120 and 122 may coordinate software distribution to client devices within specific geographic groups. For example, local group distribution manager 120 may service client devices 102 , 104 , and 106 while local group distribution manager 122 may service client devices 108 , 110 , and 112 .
  • Each local group distribution manager 120 and 122 may handle the distribution of software to the assigned client devices.
  • a local group distribution manager 120 or 122 may be physically located within or near the geographic location of the various clients assigned to the specific software distribution manager.
  • the group distribution managers 120 and 122 may be collocated yet may separately service devices in different geographic regions.
  • local group distribution managers 120 and 122 may be performed by one server device or by many devices.
  • a single server device may act as a local group distribution manager for two or more different groups of clients.
  • clusters of servers may separately act as group distribution managers to various groups.
  • a single server may be located in a sparsely populated geographic region and perform local group distribution services, while a cluster of servers may service a more densely populated region
  • Each local group distribution manager 120 and 122 may have a set of local policies 124 and 126 that may define the operation of each group distribution manager.
  • the policies 124 and 126 may define any type of behavior of the local group distribution manager.
  • the policies 124 and 126 may define the maximum bandwidth or number of connections for a server, which may also be defined with respect to time.
  • the bandwidth or connection limitations may vary for the time of day, day of the week, or other configurations. Such a limitation may enable more connections and transfers during certain periods of time and may restrict or pause transfers during other periods.
  • Some embodiments may be able to group certain client devices within a geographical location and within a specific type of network.
  • an internet service provider may have a block of network addresses that are used to connect many devices along a high bandwidth connection, such as a cable television connection or digital subscriber line connection.
  • Some groups of addresses may be assigned to a particular enterprise or company.
  • client devices may be identified with such precision, some local group distribution managers may be adapted to apply specific policies to groups of client devices from specific internet service providers.
  • Such a policy may define specific handshaking or communication protocols that may be used to transfer the software distribution, or may have different provisions that take advantage of features on the local network.
  • Some such policies may tailor the timing or bandwidth restrictions to the group of client devices to correspond with unique characteristics for the internet service provider. For example, the bandwidth availability for cable television connections may be restricted in the evening and late evening hours but less restricted during the late night and daytime hours. An internet service provider that has largely commercial clients may have restricted bandwidth during business hours but unrestricted bandwidth in the evening and nighttime hours.
  • the software for distribution 128 and 130 may be used by the local group distribution managers 120 and 122 to distribute to the various clients.
  • the software may be customized or localized by the local group distribution managers 120 and 122 .
  • the software for distribution 128 and 130 may include different versions of distributed software and the local group distribution managers 120 and 122 may select an appropriate version to distribute to a particular client device or group of client devices.
  • the local group distribution managers 120 and 122 may package the distributed software in a specific form by zipping, encrypting, or compressing various files together or by organizing the software in a particular form.
  • some clients or groups of clients may receive a subset of the software for distribution 128 and 130 .
  • the various clients may receive distributed software using various mechanisms.
  • the clients may connect to the local group distribution manager or some other server and receive a list of available software distributions.
  • the client may then contact the local group distribution manager 120 or 122 and request a download of all or a portion of the available software.
  • the local group distribution managers 120 and 122 may initiate a communication session with the various client devices and transfer the distributed software using a push-type distribution mechanism.
  • FIG. 2 is a flowchart illustration of an embodiment 200 showing a method for grouping software requesters.
  • Embodiment 200 is an example of a method or sequence for processing a distribution request and grouping the requester.
  • Embodiment 200 is merely one example of such a method.
  • Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • Requests for distribution may be received in block 202 .
  • the requests may be sent by a device as part of a subscription service for software updates, as part of a registration and activation procedure performed during the activation of new software, or for some other procedure or reason.
  • a network address may be determined in block 206 from which a geographical location may be determined in block 208 . Based on the geographical location, the requester may be assigned a group in block 210 .
  • the network address of block 206 may be an Internet Protocol or IP address. Some other address mechanism may be used in certain cases, such as an address for a connection point used by the client device.
  • a wireless device may have the ability to connect to the Internet through many different wireless connection points.
  • a portable device may connect through a wireless connection point in a coffee shop or airport.
  • such a device may connect using the network address of a connection point and may not have a dedicated network address assigned to the device.
  • the network address of the connection point may be used to determine a geographical location.
  • the groups defined in block 210 may correspond with the resolution or granularity by which a location may be determined in block 208 . Some embodiments may determine a location that is relatively precise, such as the street address of a device. Some embodiments may determine that a device is within a specific county, city, state, or country.
  • a database of network addresses may be queried.
  • an approximate location such as a state or country
  • databases may be compressed or summarized so that the queries may be performed quickly. In such cases, some accuracy may be lost during the summarization or compression and some addresses may not be correctly mapped to their actual geographic location.
  • the group distribution manager of block 214 may communicate with the various client devices and transfer software to the client devices using various mechanisms.
  • the group distribution manager may be one of many processes on a distribution server that distributes software to a group of client devices.
  • the process of receiving requests in block 202 and processing each requester in blocks 204 - 210 may be performed by a central server.
  • a central server may be located in a company headquarters or some other centralized location and accessed by client devices from many different locations.
  • further communications may be performed by the group distribution manager server that may be located within or near the geographical area of the assigned client devices.
  • FIG. 3 is a flowchart illustration of an embodiment 300 showing a method for distributing software based on policies.
  • Embodiment 300 is an example of method for distributing software to a variety of requesters using a random allocation.
  • Embodiment 300 is merely one example of such a method.
  • Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • the requesters for a particular geographical group may be received in block 302 .
  • a random number may be assigned in block 306 .
  • the random number in block 306 may be used to allocate bandwidth, communication sessions, or other factors to specific client devices and not to other client devices.
  • each requester may be assigned an evenly distributed random number between 0 and 1. For example, in order to limit total bandwidth utilization, those requester client devices with random numbers less than 0.15 may be permitted to receive a distribution.
  • Each embodiment may have a different mechanism for allocating distributions, and the embodiment 300 is illustrated here as an example.
  • Distribution policies may be applied in block 308 .
  • the distribution policies may define the timing, configuration, or other factors associated with the software distribution.
  • larger volumes of distributions may be performed at certain hours of the day and certain days of the week.
  • a limited amount of distribution may be performed during certain periods of time, such as daytime or early evening when bandwidth usage is high. In some embodiments, no distribution may be performed during such periods.
  • the distribution policies of block 308 may include configuration parameters for the entire group or subgroups of client devices.
  • Such configuration parameters may include a predefined handshaking or protocol, the manner in which software may be packaged or formatted, or various options that may be specified for each client device.
  • the allocation for the group may be determined in block 310 .
  • the allocation may refer to a certain percentage or fraction of client devices that may be permitted to receive a distribution.
  • large distributions such as operating system updates that may be received by tens or hundreds of millions of devices and may be very large distribution packages, the distributions may take place over several days, weeks, or even months, with a small fraction of devices being able to receive a distribution at a given period of time.
  • the software may be distributed per the allocation and policies in block 312 .
  • a client device may request a distribution package and may download the package.
  • the download process may take several minutes or several hours or more, depending on the connection and size of the distribution.
  • the distribution server may contact the requester client device and transmit the distribution using a push-type distribution mechanism.
  • the process may return to block 308 .
  • the policies may change over time. For example, during a period of high available bandwidth, a large number of client devices may begin receiving a distribution package. Even though many requesters may be in the process of receiving the distribution package, the policy may change to pause or halt ongoing distributions. In such a case, the distribution polices may be re-applied in block 308 , a new allocation determined in block 310 , and the software may be distributed according to the polices in block 312 .
  • FIG. 4 is a flowchart diagram of an embodiment 400 showing a method for distributing software.
  • Embodiment 400 is an example of a method by which an allocation fraction may be increased or decreased and more or fewer requester or client devices may receive a software distribution.
  • Embodiment 400 is merely one example of such a method.
  • Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • the distribution may begin in block 402 and the allocation fraction determined in block 404 .
  • the allocation fraction may be small and as client devices may complete the software distribution, the allocation fraction may be raised over time. In some embodiments, the allocation fraction may be raised or lowered depending on the time of day or other factors.
  • the requester For each requester in block 406 , if the requester has finished receiving the distribution in block 407 , the requester is left unchanged. If the requester's random number is not within the allocation fraction in block 408 , and the requester is not currently receiving a distribution in block 410 , the requester is left unchanged.
  • requester and client device are used interchangeably.
  • the current distribution may be paused in block 412 .
  • Such a situation may occur if an allocation fraction is changed from a large fraction to a small fraction, where the fraction is defined as the portion of requesters or client devices that may be permitted to receive the software distribution.
  • the distribution is continued in block 416 .
  • Such a situation may occur when an allocation fraction is was lowered, causing the client device to have the distribution paused, then the allocation fraction may be raised, allowing the distribution to continue.
  • the distribution is started in block 418 .
  • each requester is processed in block 406 , if a change in the allocation fraction is made in block 420 , each requester is evaluated again starting in block 406 .
  • the embodiment 400 is an example of a method by which software distributions may be started or paused.
  • a software distribution may begin with a small fraction of client devices being able to receive the distribution. Over time, those client devices may complete the distribution and the fraction may be periodically raised higher until all of the requesters are able to receive the software distribution. During the distribution period, the allocation may be raised and lowered to respond to time policies, bandwidth restrictions, or other factors.

Abstract

A software distribution mechanism evaluates network addresses of requesting clients to determine a location for each client. The clients from a particular location are grouped together and a fraction of those clients in a particular group are recipients of a software distribution. The faction is adjusted to enable more or fewer clients to download, thus effectively throttling the amount of bandwidth consumed by a mass distribution event. The fraction may be adjusted for particular geographical locations and the time of day to make more effective use of network bandwidth.

Description

    BACKGROUND
  • Distribution of software across the Internet can take a large toll on Internet bandwidth, especially when many clients download software at the same time. For very large distributions of software, such as updates to various applications and operating systems that may have hundreds of millions of client devices that each download many megabytes or even gigabytes of data, the sheer volume of downloaded data may use an extremely large amount of Internet bandwidth.
  • SUMMARY
  • A software distribution mechanism evaluates network addresses of requesting clients to determine a location for each client. The clients from a particular location are grouped together and a fraction of those clients in a particular group are recipients of a software distribution. The faction is adjusted to enable more or fewer clients to download, thus effectively throttling the amount of bandwidth consumed by a mass distribution event. The fraction may be adjusted for particular geographical locations and the time of day to make more effective use of network bandwidth.
  • This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • In the drawings,
  • FIG. 1 is a diagram illustration of an embodiment showing a system for software distribution.
  • FIG. 2 is a flowchart illustration of an embodiment showing a method for grouping software requesters.
  • FIG. 3 is a flowchart illustration of an embodiment showing a method for distributing software based on policies.
  • FIG. 4 is a flowchart illustration of an embodiment showing a method for distributing software.
  • DETAILED DESCRIPTION
  • A software distribution system may resolve a geographic location from a network address and use the geographic location in metering or controlling software distributions to client devices. Each client or requester may be able to receive a software distribution based on policies applied to groups established for various geographic locations.
  • In an example use of an embodiment, a worldwide software distribution may be performed by grouping each client into groups defined by continents or time zones. During the course of a day, those clients in a nighttime location may be permitted to receive a software distribution while clients in a daytime location may be restricted from the distribution. Such an embodiment may make use of the fact that bandwidth is more available during nighttime than daytime.
  • Each group may have a mechanism for permitting distribution to a fraction of the client devices. One mechanism may be to assign a random number to each client device, producing a random distribution of devices. An allocation fraction may be set for the group that defines the fraction of devices that may receive the distribution. The allocation fraction may be used to select those devices with a random number below a certain number and commence the distribution. Over time, the allocation fraction may be increased so that each group member may eventually receive the distribution.
  • One of the benefits of a software distribution system is that network bandwidth and server capacity may not be overwhelmed by a large number of requests or large sized distributions. The allocation mechanism may be capable of increasing and decreasing the number of clients being serviced, enabling dynamic control over the distribution.
  • A software distribution may be any type of computer data that may be distributed to client devices. For example, operating system and application updates may be periodically distributed to client devices. In some instances, a software distribution may be in the form of data, while in other instances, a software distribution may be in the form of executable code. Some embodiments may have an executable installer on each client that accepts the distribution and installs the distribution on the client device.
  • The software distribution may be performed in many different manners. In some cases, a client device may download a distribution in a pull-type arrangement. In other cases, a server device may push a distribution to the client device. Other systems may use other mechanisms, protocols, and techniques for transferring a software distribution from servers to clients.
  • Throughout this specification, like reference numbers signify the same elements throughout the description of the figures.
  • When elements are referred to as being “connected” or “coupled,” the elements can be directly connected or coupled together or one or more intervening elements may also be present. In contrast, when elements are referred to as being “directly connected” or “directly coupled,” there are no intervening elements present.
  • The subject matter may be embodied as devices, systems, methods, and/or computer program products. Accordingly, some or all of the subject matter may be embodied in hardware and/or in software (including firmware, resident software, micro-code, state machines, gate arrays, etc.) Furthermore, the subject matter may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media.
  • Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by an instruction execution system. Note that the computer-usable or computer-readable medium could be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, of otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
  • When the subject matter is embodied in the general context of computer-executable instructions, the embodiment may comprise program modules, executed by one or more systems, computers, or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
  • FIG. 1 is a diagram of an embodiment 100 showing a system for software distribution. Embodiment 100 is a functional illustration of various components that may make up a software distribution system. In some embodiments, several of the functional aspects illustrated may be performed on a single device having a processor and adapted to perform each function. In other embodiments, some of the individual functional aspects may be performed by different devices. Some such embodiments may have several devices that are used to perform one specific function or a subset of a function. For example, a cluster of server devices may be used to perform one specific function.
  • The diagram of FIG. 1 illustrates functional components of a system. In some cases, the component may be a hardware component, a software component, or a combination of hardware and software. Some of the components may be application level software, while other components may be operating system level components. In some cases, the connection of one component to another may be a close connection where two or more components are operating on a single hardware platform. In other cases, the connections may be made over network connections spanning long distances. Each embodiment may use different hardware, software, and interconnection architectures to achieve the various components described.
  • Embodiment 100 illustrates a system for software distribution. After an initial connection, a client's address may be used to determine a geographic location for the client. Based on the geographic location, the client may be assigned to various local group distribution managers that may be servers which perform the software distribution transfer to the client devices.
  • Multiple client devices 102, 104, 106, 108, 110, and 112 may connect to an address resolver 114 during an initial step of receiving a software distribution. The address resolver 114 may determine a network address from the client. In many cases, the network address may be an Internet Protocol or IP address.
  • The location resolver 116 may use an address database 117 to determine a geographic location 119 of the individual clients. Various embodiments may be able to resolve a client's geographic location with different resolutions. In some cases, the location resolver 116 may be able to resolve a location down to a country or broad geographic region. In other cases, the location resolver 116 may be able to resolve the location down to a state, city, or municipality. In still other cases, the location resolver 116 may be able to identify a client's internet service provider and an approximate street address.
  • Various mechanisms may be used to resolve a location from an address. In cases where a gross location may be used, such as determining a continent on which an address may be located, the address database 117 may be compressed or summarized so that fast and efficient lookups may be performed. When searching for more detailed location information, a more detailed address database 117 may be used.
  • Some embodiments may be used for metering bandwidth and server capacity for a distribution server. In such embodiments, the location determination may be approximated with enough accuracy so that the distribution server is not overloaded with requests or so that bandwidth is consumed in a controlled manner.
  • For example, a server located in North America may be configured to perform software distribution during periods of low network traffic, such as between midnight and 5:00 am Eastern time. When a request from a client device is received, the location may be determined to be somewhere within North America and the request may be routed to a distribution server within North America.
  • In some instances, the location resolver 116 may incorrectly determine that a client device is within North America when the client device is actually in Europe or some other geographic region. For those devices with incorrectly determined location, the distributed software may be routed from the North American server and reach the device across an intercontinental connection. In another instance, an IP subnet may fall across states or even country borders. When the location resolver 116 determines that an address is within the subnet, the location resolver 116 may or may not be able to determine on which side of the border the actual device resides. In many embodiments, the inaccuracy of location detection may be offset by the speed in which location may be determined.
  • Other embodiments may use location determination to tailor the content of the software distribution. In such embodiments, the accuracy of location determination may be of higher importance and more complex and detailed location searches may be performed. Such an embodiment may download specific content to devices within a precise geographical region. For example, a governmental regulation may limit distribution of specific content to a specific geographical region. An example of such content may be encryption or security algorithms that are regulated against transmitting to specific foreign countries. Another example may be language or location specific software, where the distribution to other areas may be confusing or otherwise undesirable.
  • Some embodiments may use multiple databases for resolving a location for an address. A first database may be used to locate an approximate location, such as a continent, country, or state. A second group of databases may be used to locate a more precise location where the second databases may be tailored for the specific continent, country, or states.
  • In some embodiments, the network address may also indicate a specific internet service provider. Based on the unique characteristics of the internet service provider, a software distribution may be packaged or transmitted in a specific way that may optimize the characteristics of the specific internet service provider. In some cases, the network address may include knowledge about the speed of the connection, such as a low speed dial-in connection, a high bandwidth fiber optic connection, a wireless connection, cable modem, digital subscriber line (DSL) connection, or other type of connection. Such knowledge may be used to estimate the data transmission time and approximate the bandwidth requirements of portions of a network.
  • Based on the geographic location 119, a distribution engine 118 may assign the client to one of several local group distribution managers 120 or 122. The local group distribution managers 120 and 122 may coordinate software distribution to client devices within specific geographic groups. For example, local group distribution manager 120 may service client devices 102, 104, and 106 while local group distribution manager 122 may service client devices 108, 110, and 112.
  • Each local group distribution manager 120 and 122 may handle the distribution of software to the assigned client devices. In many embodiments, a local group distribution manager 120 or 122 may be physically located within or near the geographic location of the various clients assigned to the specific software distribution manager. In some embodiments, the group distribution managers 120 and 122 may be collocated yet may separately service devices in different geographic regions.
  • In some embodiments, the functions of local group distribution managers 120 and 122 may be performed by one server device or by many devices. In some embodiments, a single server device may act as a local group distribution manager for two or more different groups of clients. In other devices, clusters of servers may separately act as group distribution managers to various groups. In some embodiments, a single server may be located in a sparsely populated geographic region and perform local group distribution services, while a cluster of servers may service a more densely populated region
  • Each local group distribution manager 120 and 122 may have a set of local policies 124 and 126 that may define the operation of each group distribution manager. The policies 124 and 126 may define any type of behavior of the local group distribution manager. In an example, the policies 124 and 126 may define the maximum bandwidth or number of connections for a server, which may also be defined with respect to time. The bandwidth or connection limitations may vary for the time of day, day of the week, or other configurations. Such a limitation may enable more connections and transfers during certain periods of time and may restrict or pause transfers during other periods.
  • Some policies may define a handshaking or protocol used by each local group distribution manager. One group of client devices in one locale may use one type of communication protocol while another may use a different type. Such protocol differences may include any type of difference in setting up, operating, and tearing down a communication session.
  • Some embodiments may be able to group certain client devices within a geographical location and within a specific type of network. For example, an internet service provider may have a block of network addresses that are used to connect many devices along a high bandwidth connection, such as a cable television connection or digital subscriber line connection. Some groups of addresses may be assigned to a particular enterprise or company. When client devices may be identified with such precision, some local group distribution managers may be adapted to apply specific policies to groups of client devices from specific internet service providers. Such a policy may define specific handshaking or communication protocols that may be used to transfer the software distribution, or may have different provisions that take advantage of features on the local network.
  • Some such policies may tailor the timing or bandwidth restrictions to the group of client devices to correspond with unique characteristics for the internet service provider. For example, the bandwidth availability for cable television connections may be restricted in the evening and late evening hours but less restricted during the late night and daytime hours. An internet service provider that has largely commercial clients may have restricted bandwidth during business hours but unrestricted bandwidth in the evening and nighttime hours.
  • The software for distribution 128 and 130 may be used by the local group distribution managers 120 and 122 to distribute to the various clients. The software may be customized or localized by the local group distribution managers 120 and 122. In some cases, the software for distribution 128 and 130 may include different versions of distributed software and the local group distribution managers 120 and 122 may select an appropriate version to distribute to a particular client device or group of client devices. In some cases, the local group distribution managers 120 and 122 may package the distributed software in a specific form by zipping, encrypting, or compressing various files together or by organizing the software in a particular form. In some cases, some clients or groups of clients may receive a subset of the software for distribution 128 and 130.
  • The various clients may receive distributed software using various mechanisms. In some embodiments, the clients may connect to the local group distribution manager or some other server and receive a list of available software distributions. The client may then contact the local group distribution manager 120 or 122 and request a download of all or a portion of the available software.
  • In other embodiments, the local group distribution managers 120 and 122 may initiate a communication session with the various client devices and transfer the distributed software using a push-type distribution mechanism.
  • FIG. 2 is a flowchart illustration of an embodiment 200 showing a method for grouping software requesters. Embodiment 200 is an example of a method or sequence for processing a distribution request and grouping the requester. Embodiment 200 is merely one example of such a method. Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • Requests for distribution may be received in block 202. In some cases, the requests may be sent by a device as part of a subscription service for software updates, as part of a registration and activation procedure performed during the activation of new software, or for some other procedure or reason.
  • For each requester in block 204, a network address may be determined in block 206 from which a geographical location may be determined in block 208. Based on the geographical location, the requester may be assigned a group in block 210.
  • The network address of block 206 may be an Internet Protocol or IP address. Some other address mechanism may be used in certain cases, such as an address for a connection point used by the client device.
  • For example, a wireless device may have the ability to connect to the Internet through many different wireless connection points. For example, a portable device may connect through a wireless connection point in a coffee shop or airport. In a communication with a group distribution manager, such a device may connect using the network address of a connection point and may not have a dedicated network address assigned to the device. In such a case, the network address of the connection point may be used to determine a geographical location.
  • The groups defined in block 210 may correspond with the resolution or granularity by which a location may be determined in block 208. Some embodiments may determine a location that is relatively precise, such as the street address of a device. Some embodiments may determine that a device is within a specific county, city, state, or country.
  • When determining a location based on a network address, a database of network addresses may be queried. In embodiments where an approximate location is used, such as a state or country, such databases may be compressed or summarized so that the queries may be performed quickly. In such cases, some accuracy may be lost during the summarization or compression and some addresses may not be correctly mapped to their actual geographic location.
  • After the requesters are processed in block 204, for each group in block 212, a group distribution manager may be spawned in block 214.
  • The group distribution manager of block 214 may communicate with the various client devices and transfer software to the client devices using various mechanisms. In some instances, the group distribution manager may be one of many processes on a distribution server that distributes software to a group of client devices.
  • In many embodiments, the process of receiving requests in block 202 and processing each requester in blocks 204-210 may be performed by a central server. Such a central server may be located in a company headquarters or some other centralized location and accessed by client devices from many different locations. After processing, further communications may be performed by the group distribution manager server that may be located within or near the geographical area of the assigned client devices.
  • FIG. 3 is a flowchart illustration of an embodiment 300 showing a method for distributing software based on policies. Embodiment 300 is an example of method for distributing software to a variety of requesters using a random allocation. Embodiment 300 is merely one example of such a method. Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • The requesters for a particular geographical group may be received in block 302. For each requester in block 304, a random number may be assigned in block 306.
  • The random number in block 306 may be used to allocate bandwidth, communication sessions, or other factors to specific client devices and not to other client devices. In an example, each requester may be assigned an evenly distributed random number between 0 and 1. For example, in order to limit total bandwidth utilization, those requester client devices with random numbers less than 0.15 may be permitted to receive a distribution.
  • Each embodiment may have a different mechanism for allocating distributions, and the embodiment 300 is illustrated here as an example.
  • Distribution policies may be applied in block 308. In some embodiments, the distribution policies may define the timing, configuration, or other factors associated with the software distribution. In many embodiments, larger volumes of distributions may be performed at certain hours of the day and certain days of the week. In many embodiments, a limited amount of distribution may be performed during certain periods of time, such as daytime or early evening when bandwidth usage is high. In some embodiments, no distribution may be performed during such periods.
  • The distribution policies of block 308 may include configuration parameters for the entire group or subgroups of client devices. Such configuration parameters may include a predefined handshaking or protocol, the manner in which software may be packaged or formatted, or various options that may be specified for each client device.
  • The allocation for the group may be determined in block 310. The allocation may refer to a certain percentage or fraction of client devices that may be permitted to receive a distribution. In large distributions, such as operating system updates that may be received by tens or hundreds of millions of devices and may be very large distribution packages, the distributions may take place over several days, weeks, or even months, with a small fraction of devices being able to receive a distribution at a given period of time.
  • The software may be distributed per the allocation and policies in block 312. In many embodiments, a client device may request a distribution package and may download the package. In some cases, the download process may take several minutes or several hours or more, depending on the connection and size of the distribution. In other cases, the distribution server may contact the requester client device and transmit the distribution using a push-type distribution mechanism.
  • If there is a change to the policies in block 314, the process may return to block 308. In some instances, the policies may change over time. For example, during a period of high available bandwidth, a large number of client devices may begin receiving a distribution package. Even though many requesters may be in the process of receiving the distribution package, the policy may change to pause or halt ongoing distributions. In such a case, the distribution polices may be re-applied in block 308, a new allocation determined in block 310, and the software may be distributed according to the polices in block 312.
  • FIG. 4 is a flowchart diagram of an embodiment 400 showing a method for distributing software. Embodiment 400 is an example of a method by which an allocation fraction may be increased or decreased and more or fewer requester or client devices may receive a software distribution. Embodiment 400 is merely one example of such a method. Other embodiments may use additional steps or may consolidate steps together, and may use different terminology or nomenclature to perform the functional steps described herein.
  • The distribution may begin in block 402 and the allocation fraction determined in block 404. In the initial phase of a distribution, the allocation fraction may be small and as client devices may complete the software distribution, the allocation fraction may be raised over time. In some embodiments, the allocation fraction may be raised or lowered depending on the time of day or other factors.
  • For each requester in block 406, if the requester has finished receiving the distribution in block 407, the requester is left unchanged. If the requester's random number is not within the allocation fraction in block 408, and the requester is not currently receiving a distribution in block 410, the requester is left unchanged.
  • For the purposes of this specification and claims, the terms requester and client device are used interchangeably.
  • If the requester is currently receiving the distribution in block 410 but not within the allocation fraction in block 408, the current distribution may be paused in block 412. Such a situation may occur if an allocation fraction is changed from a large fraction to a small fraction, where the fraction is defined as the portion of requesters or client devices that may be permitted to receive the software distribution.
  • If the requester is within the allocation fraction in block 408 and the requester's distribution is currently paused in block 414, the distribution is continued in block 416. Such a situation may occur when an allocation fraction is was lowered, causing the client device to have the distribution paused, then the allocation fraction may be raised, allowing the distribution to continue.
  • If the requester is within the allocation fraction in block 408 and the requester's distribution is not paused in block 414, the distribution is started in block 418.
  • After each requester is processed in block 406, if a change in the allocation fraction is made in block 420, each requester is evaluated again starting in block 406.
  • The embodiment 400 is an example of a method by which software distributions may be started or paused.
  • In a typical use scenario, a software distribution may begin with a small fraction of client devices being able to receive the distribution. Over time, those client devices may complete the distribution and the fraction may be periodically raised higher until all of the requesters are able to receive the software distribution. During the distribution period, the allocation may be raised and lowered to respond to time policies, bandwidth restrictions, or other factors.
  • The foregoing description of the subject matter has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the subject matter to the precise form disclosed, and other modifications and variations may be possible in light of the above teachings. The embodiment was chosen and described in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the appended claims be construed to include other alternative embodiments except insofar as limited by the prior art.

Claims (20)

1. A method comprising:
determining a network address for a plurality of client devices to receive a software distribution;
determining a geographical location for each of said client devices based on said network address;
grouping said client devices into a first group and a second group based on said geographical location; and
transferring said software distribution to a first fraction of said first group and a second fraction of said second group.
2. The method of claim 1, said transferring said software distribution comprising pushing said software distribution to said first fraction and said second fraction.
3. The method of claim 1, said transferring said software distribution comprising permitting said first fraction and said second fraction to download said software distribution.
4. The method of claim 1 further comprising assigning said client devices to a distribution manager.
5. The method of claim 4, said distribution manager being adapted to:
determining a random number for each of said client devices; and
allocating each of said client devices based on said random number.
6. The method of claim 1 further comprising:
adjusting said first fraction to transfer said software distribution to a larger number of said first group of said client devices.
7. The method of claim 1 further comprising:
adjusting said first fraction to transfer said software distribution to a smaller number of said first group of said client devices.
8. The method of claim 7 further comprising:
halting an ongoing transfer for at least a portion of said first fraction of said first group of said client devices.
9. The method of claim 7, said adjusting being based at least on a time of day for said geographical location for said first group of said client devices.
10. The method of claim 1, said software distribution comprising at least one of a group composed of:
an operating system update;
an application update; and
a data file.
11. A computer readable medium comprising computer executable code adapted to perform the method of claim 1.
12. A system comprising:
a connection to a network;
an address resolver adapted to determine a network address for each of a plurality of clients;
a location resolver adapted to determine a geographical location for each of said plurality of clients based on said network address and group said plurality of clients into a first group and a second group based on said geographical location;
a distribution engine adapted to transfer a software distribution to a first fraction of said first group and a second fraction of said second group.
13. The system of claim 12, said distribution engine further adapted to transfer said software distribution by a method comprising pushing said software distribution to said first fraction and said second fraction.
14. The system of claim 12, said distribution engine further adapted to transfer said software distribution by a method comprising permitting said software distribution to be downloaded by said first fraction and said second fraction.
15. The system of claim 12, said distribution engine further adapted to:
adjust said first fraction to transfer said software distribution to a larger number of said first group of said client devices.
16. The system of claim 12, said distribution engine further adapted to:
adjust said first fraction to transfer said software distribution to a smaller number of said first group of said client devices.
17. The system of claim 16, said distribution engine further adapted to:
halt an ongoing transfer for at least a portion of said first fraction of said first group of said client devices.
18. A method comprising:
determining a network address for a plurality of client devices to receive a software distribution;
determining a geographical location for each of said client devices based on said network address;
grouping said client devices into a first group and a second group based on said geographical location; and
transferring a first version of said software distribution to a first fraction of said first group and a second version of said software distribution to a second fraction of said second group.
19. The method of claim 18, said transferring said first version of said software distribution comprising permitting said first fraction and said second fraction to download.
20. A computer readable medium comprising computer executable instructions adapted to perform the method of claim 18.
US11/869,104 2007-10-09 2007-10-09 Software deployment using client location Active 2028-09-14 US8756318B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/869,104 US8756318B1 (en) 2007-10-09 2007-10-09 Software deployment using client location

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/869,104 US8756318B1 (en) 2007-10-09 2007-10-09 Software deployment using client location

Publications (2)

Publication Number Publication Date
US20090094378A1 true US20090094378A1 (en) 2009-04-09
US8756318B1 US8756318B1 (en) 2014-06-17

Family

ID=40524272

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/869,104 Active 2028-09-14 US8756318B1 (en) 2007-10-09 2007-10-09 Software deployment using client location

Country Status (1)

Country Link
US (1) US8756318B1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080158337A1 (en) * 2001-12-15 2008-07-03 John William Richardson Videoconference Bandwidth Selection Mechanism
US20090300179A1 (en) * 2008-05-28 2009-12-03 General Instrument Corporation Method and system for optimizing network access control
US20100037207A1 (en) * 2008-08-06 2010-02-11 Chambers Jr Howell Jack Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US20140215037A1 (en) * 2013-01-30 2014-07-31 International Business Machines Corporation Provision of management information and requests among management servers within a computing network
US9110756B1 (en) 2012-11-14 2015-08-18 Amazon Technologies, Inc. Tag-based deployment to overlapping host sets
US20150351073A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Location based application feature notification
WO2021231333A1 (en) * 2020-05-12 2021-11-18 Harmonic, Inc. Dynamic adjustment of deployment location of software within a network
TWI824222B (en) * 2020-12-31 2023-12-01 鼎新電腦股份有限公司 Enterprise resource planning system and automatic update method thereof

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087156B2 (en) * 2013-11-15 2015-07-21 Google Inc. Application version release management
US20150339330A1 (en) * 2014-05-20 2015-11-26 Sony Corporation System and method for content deployment
US11234105B2 (en) * 2014-09-29 2022-01-25 Visa International Service Association Methods and systems for asset obfuscation
US10374930B2 (en) 2016-01-28 2019-08-06 Microsoft Technology Licensing, Llc Off-peak patching for enterprise stability
US9996335B2 (en) * 2016-02-25 2018-06-12 Cisco Technology, Inc. Concurrent deployment in a network environment
US20230061613A1 (en) * 2021-09-02 2023-03-02 Capital One Services, Llc Parallel rollout verification processing for deploying updated software

Citations (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978916A (en) * 1997-11-25 1999-11-02 International Business Machines Corporation Method, system and computer program product for updating region-dependent software using a common update module for multiple regions
US20020116698A1 (en) * 2000-05-05 2002-08-22 Marc Lurie Method for distributing, integrating, and hosting a software platform
US20020132616A1 (en) * 2001-03-19 2002-09-19 Ross Lorna R. Communications system with automatic download capability
US20020143991A1 (en) * 2001-03-16 2002-10-03 Kingsum Chow Geographic location determination including inspection of network address
US20020188842A1 (en) * 2001-06-06 2002-12-12 Willeby Tandy G. Client system validation by network address and associated geographic location verification
US20030061323A1 (en) * 2000-06-13 2003-03-27 East Kenneth H. Hierarchical system and method for centralized management of thin clients
US20030066065A1 (en) * 2001-10-02 2003-04-03 International Business Machines Corporation System and method for remotely updating software applications
US20030099202A1 (en) * 2000-01-11 2003-05-29 Lear Ben A. System and method for distribution of data packets utilizing an intelligent distribution network
US6671695B2 (en) * 2001-06-18 2003-12-30 The Procter & Gamble Company Dynamic group generation and management
US20040019889A1 (en) * 2002-04-23 2004-01-29 Secure Resolutions, Inc. Software distribution via stages
US20040031028A1 (en) * 2002-08-06 2004-02-12 Aardwork Software Limited Updating of software
US20040083307A1 (en) * 2002-10-27 2004-04-29 Mr. Sezen Uysal Apparatus and method for transparent selection of an internet server based on geographic location of a user
US20040117461A1 (en) * 2002-12-09 2004-06-17 Pentax Corporation Download system and downloading device
US20040193702A1 (en) * 2003-03-31 2004-09-30 Microsoft Corp. System and method of network content location for roaming clients
US6833787B1 (en) * 1999-10-07 2004-12-21 Asap Software Express, Inc. Method and system for device tracking
US20050021738A1 (en) * 2002-11-12 2005-01-27 Kenneth Goeller Network geo-location system
US20050027846A1 (en) * 2003-04-24 2005-02-03 Alex Wolfe Automated electronic software distribution and management method and system
US20050050538A1 (en) * 1999-08-31 2005-03-03 Yukihiro Kawamata Software distribution system and software receiving terminal apparatus
US20050097549A1 (en) * 2003-10-31 2005-05-05 International Business Machines Corporation Location sensitive software download
US20050120040A1 (en) * 2003-11-29 2005-06-02 Microsoft Corporation Network download regulation method and system
US20050144298A1 (en) * 2002-03-05 2005-06-30 Samuel Subodh A. System and method for enterprise software distribution
US6928481B1 (en) * 2000-05-05 2005-08-09 International Business Machines Corporation Method, apparatus and program to optimize the network distribution of digital information based on hierarchical grouping of server topology and code distribution
US20050195960A1 (en) * 2004-03-03 2005-09-08 Cisco Technology, Inc. Method and system for automatic call distribution based on location information for call center agents
US20060047775A1 (en) * 2004-08-27 2006-03-02 Timo Bruck Method and apparatus for downloading content
US20060059100A1 (en) * 2004-04-14 2006-03-16 Digital River, Inc. Software license server with geographic location validation
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US20060101449A1 (en) * 2004-10-29 2006-05-11 Caterpillar Inc. Location based software flashing system
US20060123040A1 (en) * 2004-12-03 2006-06-08 International Business Machines Corporation Algorithm for automated enterprise deployments
US7062572B1 (en) * 2001-03-19 2006-06-13 Microsoft Corporation Method and system to determine the geographic location of a network user
US20060167725A1 (en) * 2005-01-25 2006-07-27 Microsoft Corporation Method and apparatus for scheduling
US7088237B2 (en) * 2003-02-14 2006-08-08 Qualcomm Incorporated Enhanced user privacy for mobile station location services
US20060248116A1 (en) * 2005-04-13 2006-11-02 Sobel William E Controllable deployment of software updates
US7181512B1 (en) * 2002-05-06 2007-02-20 Accenture Global Services Gmbh Workstation deployment
US20070094658A1 (en) * 2005-08-12 2007-04-26 Dicarlo Jennifer M Method and apparatus for downloading software updates
US20070169073A1 (en) * 2002-04-12 2007-07-19 O'neill Patrick Update package generation and distribution network
US20070220510A1 (en) * 2006-03-14 2007-09-20 Bell Denise A Method for advanced management of software distribution tasks
US20080037536A1 (en) * 2000-11-17 2008-02-14 Microsoft Corporation System and method for determining the geographic location of internet hosts
US20080065691A1 (en) * 2006-09-11 2008-03-13 Apple Computer, Inc. Metadata for providing media content
US20080109540A1 (en) * 2006-11-03 2008-05-08 Computer Associates Think, Inc. Method and System for Distributing Software Components
US20090007091A1 (en) * 2007-06-27 2009-01-01 Microsoft Corporation Techniques for automatic software provisioning
US20090017812A1 (en) * 2007-07-11 2009-01-15 Weng Chong Chan Method and system for restoring user settings after over-the-air update of mobile electronic device software
US20090024993A1 (en) * 2007-07-20 2009-01-22 Microsoft Corporation Dynamically regulating content downloads
US20090077549A1 (en) * 2007-09-17 2009-03-19 Sony Corporation System, Apparatus, and Method for an Upgrader Module
US20090094248A1 (en) * 2007-10-03 2009-04-09 Concert Technology Corporation System and method of prioritizing the downloading of media items in a media item recommendation network
US7555551B1 (en) * 2005-04-13 2009-06-30 Symantec Corporation Automatic controllable deployment of software updates

Patent Citations (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978916A (en) * 1997-11-25 1999-11-02 International Business Machines Corporation Method, system and computer program product for updating region-dependent software using a common update module for multiple regions
US20050050538A1 (en) * 1999-08-31 2005-03-03 Yukihiro Kawamata Software distribution system and software receiving terminal apparatus
US6833787B1 (en) * 1999-10-07 2004-12-21 Asap Software Express, Inc. Method and system for device tracking
US20030099202A1 (en) * 2000-01-11 2003-05-29 Lear Ben A. System and method for distribution of data packets utilizing an intelligent distribution network
US20020116698A1 (en) * 2000-05-05 2002-08-22 Marc Lurie Method for distributing, integrating, and hosting a software platform
US6928481B1 (en) * 2000-05-05 2005-08-09 International Business Machines Corporation Method, apparatus and program to optimize the network distribution of digital information based on hierarchical grouping of server topology and code distribution
US20030061323A1 (en) * 2000-06-13 2003-03-27 East Kenneth H. Hierarchical system and method for centralized management of thin clients
US20080037536A1 (en) * 2000-11-17 2008-02-14 Microsoft Corporation System and method for determining the geographic location of internet hosts
US20020143991A1 (en) * 2001-03-16 2002-10-03 Kingsum Chow Geographic location determination including inspection of network address
US7062572B1 (en) * 2001-03-19 2006-06-13 Microsoft Corporation Method and system to determine the geographic location of a network user
US20020132616A1 (en) * 2001-03-19 2002-09-19 Ross Lorna R. Communications system with automatic download capability
US20020188842A1 (en) * 2001-06-06 2002-12-12 Willeby Tandy G. Client system validation by network address and associated geographic location verification
US6671695B2 (en) * 2001-06-18 2003-12-30 The Procter & Gamble Company Dynamic group generation and management
US20030066065A1 (en) * 2001-10-02 2003-04-03 International Business Machines Corporation System and method for remotely updating software applications
US20050144298A1 (en) * 2002-03-05 2005-06-30 Samuel Subodh A. System and method for enterprise software distribution
US20070169073A1 (en) * 2002-04-12 2007-07-19 O'neill Patrick Update package generation and distribution network
US20040019889A1 (en) * 2002-04-23 2004-01-29 Secure Resolutions, Inc. Software distribution via stages
US7181512B1 (en) * 2002-05-06 2007-02-20 Accenture Global Services Gmbh Workstation deployment
US20040031028A1 (en) * 2002-08-06 2004-02-12 Aardwork Software Limited Updating of software
US20040083307A1 (en) * 2002-10-27 2004-04-29 Mr. Sezen Uysal Apparatus and method for transparent selection of an internet server based on geographic location of a user
US20050021738A1 (en) * 2002-11-12 2005-01-27 Kenneth Goeller Network geo-location system
US20040117461A1 (en) * 2002-12-09 2004-06-17 Pentax Corporation Download system and downloading device
US7088237B2 (en) * 2003-02-14 2006-08-08 Qualcomm Incorporated Enhanced user privacy for mobile station location services
US20040193702A1 (en) * 2003-03-31 2004-09-30 Microsoft Corp. System and method of network content location for roaming clients
US20050027846A1 (en) * 2003-04-24 2005-02-03 Alex Wolfe Automated electronic software distribution and management method and system
US20050097549A1 (en) * 2003-10-31 2005-05-05 International Business Machines Corporation Location sensitive software download
US20050120040A1 (en) * 2003-11-29 2005-06-02 Microsoft Corporation Network download regulation method and system
US20050195960A1 (en) * 2004-03-03 2005-09-08 Cisco Technology, Inc. Method and system for automatic call distribution based on location information for call center agents
US20060059100A1 (en) * 2004-04-14 2006-03-16 Digital River, Inc. Software license server with geographic location validation
US20060047775A1 (en) * 2004-08-27 2006-03-02 Timo Bruck Method and apparatus for downloading content
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US20060101449A1 (en) * 2004-10-29 2006-05-11 Caterpillar Inc. Location based software flashing system
US20060123040A1 (en) * 2004-12-03 2006-06-08 International Business Machines Corporation Algorithm for automated enterprise deployments
US20060167725A1 (en) * 2005-01-25 2006-07-27 Microsoft Corporation Method and apparatus for scheduling
US7555551B1 (en) * 2005-04-13 2009-06-30 Symantec Corporation Automatic controllable deployment of software updates
US20060248116A1 (en) * 2005-04-13 2006-11-02 Sobel William E Controllable deployment of software updates
US20070094658A1 (en) * 2005-08-12 2007-04-26 Dicarlo Jennifer M Method and apparatus for downloading software updates
US20070220510A1 (en) * 2006-03-14 2007-09-20 Bell Denise A Method for advanced management of software distribution tasks
US20080065691A1 (en) * 2006-09-11 2008-03-13 Apple Computer, Inc. Metadata for providing media content
US20080109540A1 (en) * 2006-11-03 2008-05-08 Computer Associates Think, Inc. Method and System for Distributing Software Components
US20090007091A1 (en) * 2007-06-27 2009-01-01 Microsoft Corporation Techniques for automatic software provisioning
US20090017812A1 (en) * 2007-07-11 2009-01-15 Weng Chong Chan Method and system for restoring user settings after over-the-air update of mobile electronic device software
US20090024993A1 (en) * 2007-07-20 2009-01-22 Microsoft Corporation Dynamically regulating content downloads
US8201164B2 (en) * 2007-07-20 2012-06-12 Microsoft Corporation Dynamically regulating content downloads
US20090077549A1 (en) * 2007-09-17 2009-03-19 Sony Corporation System, Apparatus, and Method for an Upgrader Module
US20090094248A1 (en) * 2007-10-03 2009-04-09 Concert Technology Corporation System and method of prioritizing the downloading of media items in a media item recommendation network

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080158337A1 (en) * 2001-12-15 2008-07-03 John William Richardson Videoconference Bandwidth Selection Mechanism
US20090300179A1 (en) * 2008-05-28 2009-12-03 General Instrument Corporation Method and system for optimizing network access control
US9560049B2 (en) * 2008-05-28 2017-01-31 Arris Enterprises, Inc. Method and system for optimizing network access control
US20100037207A1 (en) * 2008-08-06 2010-02-11 Chambers Jr Howell Jack Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US9317274B2 (en) * 2008-08-06 2016-04-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
US9489188B1 (en) * 2012-11-14 2016-11-08 Amazon Technologies, Inc. Tag-based deployment
US9110756B1 (en) 2012-11-14 2015-08-18 Amazon Technologies, Inc. Tag-based deployment to overlapping host sets
US20140215037A1 (en) * 2013-01-30 2014-07-31 International Business Machines Corporation Provision of management information and requests among management servers within a computing network
US10225135B2 (en) * 2013-01-30 2019-03-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Provision of management information and requests among management servers within a computing network
US20150351073A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Location based application feature notification
US9706518B2 (en) * 2014-05-30 2017-07-11 Apple Inc. Location based application feature notification
WO2021231333A1 (en) * 2020-05-12 2021-11-18 Harmonic, Inc. Dynamic adjustment of deployment location of software within a network
US11589243B2 (en) 2020-05-12 2023-02-21 Harmonic, Inc. Dynamic adjustment of deployment location of software within a network
TWI824222B (en) * 2020-12-31 2023-12-01 鼎新電腦股份有限公司 Enterprise resource planning system and automatic update method thereof

Also Published As

Publication number Publication date
US8756318B1 (en) 2014-06-17

Similar Documents

Publication Publication Date Title
US8756318B1 (en) Software deployment using client location
US11194719B2 (en) Cache optimization
US9336233B2 (en) Method and system for determining an optimally located storage node in a communications network
US20090024993A1 (en) Dynamically regulating content downloads
US20120198070A1 (en) Content Replication Workflow in Content Delivery Networks
US20030061491A1 (en) System and method for the allocation of network storage
US20200380050A1 (en) Method for acquiring service data and converged cdn system
US8761727B2 (en) Method and apparatus for pre-caching in a telecommunication system
US7685312B1 (en) Resource location by address space allocation
CN110324406B (en) Method for acquiring business data and cloud service system
WO2008115647A1 (en) License manager and schema
US8843511B2 (en) Configuration management system, proxy system, and configuration management method
CN110198330B (en) Mirror image downloading method and device
CN104113512A (en) CDN system, advertisement push system and advertisement push method
CN105068755A (en) Data duplicate storage method facing cloud computing content distribution network
KR100823730B1 (en) Method and apparatus for providing streaming service based on P2P, and streaming service system using the same
CN105978890A (en) Method and device for locating domain names attacked by SYN
KR20100120093A (en) Efficient and cost-effective distributed call admission control
US8775456B2 (en) System and method for scheduled and collaborative distribution of software and data to many thousands of clients over a network using dynamic virtual proxies
CN106936907A (en) A kind of document handling method, logical server, access server and system
CN110008029B (en) ceph metadata cluster directory distribution method, system, device and readable storage medium
EP2860637B1 (en) Information processing system, method, and program
CN105634932A (en) Message pushing method, device and system
CN101345684B (en) P2P node administration method
CN103166978A (en) Method and device of data obtaining

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:REUS, EDWARD;HOU, JIANBO;DAVIS, JEFFERSON;AND OTHERS;REEL/FRAME:019933/0461

Effective date: 20071004

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001

Effective date: 20141014

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8