The present invention relates to the field of remote network connections and more particularly to a method and system to manage connection of a connection application to one of a plurality of network connection points.
Due to the increasing globalization of economies, the need to provide communications between geographically dispersed persons and facilities has increased. For example, a particular business may have facilities located across multiple countries and continents. A further result of increased globalization has been an increase in business travel. The increasing dependence of corporations and persons on Internet-based communications has furthermore made it desirable that mobile workers (so-called “road warriors”) be able to access Internet-based and wireless communications as they travel worldwide. Services that facilitate communications to such mobile persons are commonly referred to as “roaming services”. Considering Internet-based communications as an example, in order to meet the needs of mobile customers, Internet Service Providers (ISPs) have begun to offer local-call access to the Internet from various locations world wide, such a service being termed a “roaming” Internet access solution. The requirement for a roaming solution arises primarily because ISPs tend to specialize by geographic area, causing gaps in service coverage. The expansion of network infrastructure, network management and continuous upgrades to meet required reliability and performance standards all place tremendous capital and time burdens on ISPs. For these reason, many ISPs only locate Points of Presence (POPs) in a limited geographic area.
For the reasons set out above, the ability for ISPs to offer Internet roaming solutions, especially to business customers, is becoming increasingly important as many businesses utilize Internet-based communications to replace traditional remote access solutions for their telecommuters and mobile work forces. In order to provide Internet roaming solutions, some ISPs have begun to share network infrastructure to gain additional geographic reach.
It is to be appreciated that a provider of roaming access services may wish to manage a connection application used by the user to prioritize network access points that may be used to a local ISP.
In accordance with the invention, there is provided a method for managing a network connection application, the method including:
The method may include associating a weight bias with each selection weight, the weight bias influencing the priority of the connection point. In one embodiment, the selection weights are normalized.
The method may include:
In one embodiment, the selection criteria are selected from the group including the price, network connection performance data, profit margin, service commitment associated with the connection point, a user error, a software error, a hardware error, and a network error. The network connection performance data may include one of connection speed and throughput.
The price criteria may be a price of the particular connection point relative to the price of all connection points in a particular pricing plan. The network connection performance data may include connection quality criteria. In one embodiment, the network connection performance data includes speed criteria defined as a speed of the associated connection point relative to a speed of all connection points.
The profit margin criteria may be defined as a margin available on the associated connection point relative to a margin available on all connection points in a particular pricing plan. The provider commitment may be defined as a percentage of commitment remaining in a period relative to all other commitments in the period. The provider selector weight may be an integer assigned by a roaming access service provider.
In one embodiment, the method includes:
The method may include diversifying the connection points in the priority list so that connection points from a plurality of service providers are provided to a user.
The method may include:
Further in accordance with the invention there is provided a method for managing a network connection application, the method including:
Still further according to the invention, there is provided a management system to manage a connection application, the system including:
According to a yet further aspect of the invention, there is provided a management system to manage a connection application, the system including:
The invention extends to a machine-readable medium embodying a sequence of instructions that, when executed by a machine, cause the machine to execute any of the methods described herein.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Although the present invention is described below by way of various embodiments that include specific structures and methods, embodiments that include alternative structures and methods may be employed without departing from the principles of the invention described herein.
In general, embodiments described below feature a network-based application that modifies a priority list of network connection points based on selection criteria, for example, price, quality, speed, profit margin, provider commitment, and diversity requirements associated with the access point. The selection criteria may also be related to data collected from the connection application.
Network-Related Technology
Before describing embodiments of the present invention in detail, some of the concepts on which the present invention is based are discussed. A component of one embodiment of the present invention is a computer server program 10, two of which are shown in
Another component of one embodiment the present invention is an Internet Service Provider (ISP) 16 (see
ISPs 16 generally provide a plurality of Point-Of-Presence (POP) gateways that define network connection or access points for the customer to gain Internet access by making a local telephone call using the connection application. Thus, a POP 24 is an access point to the Internet 18 that is associated with a telephone number.
Yet another component of one embodiment of the present invention is a servlet. Servlets are Java applications, which run on a Web server or application server and provide server-side processing, typically to access a database. It is a Java-based alternative to Common Gateway Interface (CGI) scripts, interface programs, usually written in C or PERL, which enables an Internet server to run external programs to perform a specific function.
Architecture
With these concepts in mind, an embodiment of system architecture of the present invention can be explored (see
In one embodiment of the present invention, a server machine 35 (on which the server program 10 may reside) includes a web server 36 and a database server 38. The web server 36 may include load servlet 40 and report servlet 42 database applications. The database server 38 includes an SQM process application 44 consisting of a main SQM thread 46, and process thread 48 and purge thread 50 components. These components may be responsible for storing and normalizing data for service quality analysis. Although
Methodology
With these concepts in mind, an exemplary embodiment of the methodology of the present invention can be further explored. In one embodiment of the present invention, global connectivity services may be provided that give users access to the Internet 18 from any location in the world. As mentioned above, users may connect utilizing a client connection application 26 to connect to the Internet 18 via a local ISP 16. In one embodiment, users may specify an access type and a location using the GUI 32 (see
However, circumstances may arise where the roaming access service provider may wish to exercise at least some control or influence over the list of connection points or POPs 34 (listed in the phonebook 30) and/or the order in which the POPs 24 are presented to the user or customer. Thus, by altering the order in which the access points or POPs are provided in the phonebook, the roaming access service provider can drive up the usage of particular POP 24 and thus use of a particular network. For example, the order in which the POPs 24 are provided may be dependent upon access point quality, price, the roaming access service provider's profit margin, the roaming access service provider's commitments to the provider of the network, access point connection speed, or the like. Each of these criteria might have a different level of importance or weight attached to it. For example, the roaming access service provider may favor a one or more of the POPs 24 due to a greater profit margin relative to other POPs 24, but may still want to give the user an option of choosing a high-quality access point or an access point that is cheaper for the user. The system and method in accordance with the present invention facilitates the management of the connection application 26 to control or influence the order of the POPs 24 presented to the user.
The connection application 26, also in accordance with an aspect of the invention, includes a list or directory 34 of access points or POPs 24, at least some of which have weighted criteria associated with the POP 24. The weighted criteria influence the order in which the POPs 24 appear in a list 34 of appropriate POPs 24 provided to a user. The appropriate POPs 24 are presented to the user based on the location information selected in a location section 56 of the GUI 32 (see
In one embodiment, the prioritization of the POPs 24 is based on a priority indicator derived from a plurality of weighted selection criteria associated with each POP 24. Thus, the normalized weight may influence the relative position of the POP 24 with respect to other appropriate POPs 24. For example, as described in more detail below, the selection criteria may be (but not limited to):
These criteria may then be processed to obtain the preference indicator that the connection application 26 may use so as to present POPs 24 to the user in an order controlled or influenced by the management system 52. It is however to be appreciated that not all access points or POPs require associated selection criteria.
In one exemplary embodiment, each selection criteria is normalized to a value between 0 and 100 to provide a selection weight. The sort order or relative priority of each access point or POP may then be based on the sum of the selection weight multiplied by a constant or bias (C×) associated with each of the criteria:
Preference Indicator=(P*Cp)+(Q*Cq)+(S*Cs)+(M*Cm)+(C*Cc)+(W*Cw).
Dependent upon the particular implementation, the constants or bias may be set at a global level for some or all criteria. For example, if increasing the profit margin is important, the constant Cm may be raised for all profiles so that margin is weighted more heavily.
In certain embodiments, the selection weights of the selection criteria may be set or chosen per-customer. For example, although the roaming service provider may weigh profit margins heavily, this may need to be balanced against a particular customer's Service Level Agreement (SLA) and, under these circumstances, the customer's profile may have Cm lowered and Cq raised.
In one embodiment, the exemplary selection criteria may be determined as follows:
Circumstances may however arise in which the access point or POP management methodology described herein may produce a POP list wherein all POPs 24 at the top of the list 34 presented to the user are from the same access provider. Under these circumstances, the quality of the service provided to the customer may be adversely affected if the network of the POP provider fails (e.g. the client machine 20 may be unable to establish a connection to the provider's POP). This may require a customer or user to make multiple attempts to connect to the network using the numbers from the top of the list. Accordingly, in one embodiment of the invention, the management system 52 may diversify the priority list. The diversified priority list presented to the user may then be based not only on the selection criteria but also include POPs 24 from different service providers (see
The exemplary GUI 32 in
In order to establish a network connection, the user enables the connection application 26 that then generates the GUI 32. The user may then select the particular type of connection to be established. For example, the user my select a “Modem” tab 60 to establish a dialup connection, an “ISDN” tab 62 to establish a connection via an ISDN line, a “PHS” tab 64 for a PHS connection, a “Wireless Broadband” tab 66 to establish a connection via a wireless broadband connection, a “Wired Broadband” tab 68 to establish a connection via a wired broadband connection, and a “Home Broadband” tab 70 to establish a connection via a home broadband connection.
When a user selects the “Modem” tab 60, the user may use a dropdown menu 72 to select a country, a state dropdown menus 74 to select a state, or a city dropdown menu 76 to select a city in which in which the user is presently located. By specifying the country, state or city where the user is, only access points that are in proximity to the specified location may then be displayed. In addition or instead, the user may enter NPA/NXX area code in the field 78. By specifying the NPA/NXX area code of the originating telephone number, only access points in the area of the specified exchange are displayed.
In response to the information entered in the location section 56, the connection application 26 presents the appropriate POPs 24 to the user in the list 34 based on the selection criteria and the priority list. As users tend to choose entries at the top of a displayed list, it is likely that the user will choose a POP preferred by the roaming service provider. After the user has selected a POP 24 from the list 34, the user may then select the “Connect” button 80 to initiate the network connection.
The location section 56 may thus define a filter arrangement that filters the access points or POPs 24 displayed to the user. Accordingly, the user may locate nearby POPs thereby to reduce telephone line usage charges.
In one embodiment, the POPs are sorted in an order based on the criteria mentioned above which enables the roaming service provider to adjust the priority of entries in the list 34 according to internal policies. However, in other embodiments, the connection application 26 allows the user to click column headers 82, 84 and 86 to sort the POPs 24 according to the selected column.
More detailed functionality of the connection application 26 (see
SQM Client/Agent
The SQM Client component/Agent 28 of the connection application 26 collects user experience information on each connection attempt by the connection application 26. Table I below shows exemplary data collected by the SQM client 28.
The SQM client 28 may store the connection experience data in a local file as a comma separated list of values. Each line of this file may correspond to one connection attempt by the connection application 26. The entire file containing the connection information collected by the SQM client 28 may be transmitted to a SQM loader 82 (see below) after the client machine 20 connects to the Internet 18.
SQM Loader
Referring in particular to
SQM Process
The SQM Process tool 86 (see also the SQM process application 44 of
The worker thread module 92 of the SQM process tool 86 may determine connection location (access point/POP), customer information, and unique session identification information and store this information in the SQM database 84 (see
In one embodiment, the SQM agent 28 may collect network connection performance data of a number of POPs with which the connection application 26 attempts to establish a connection and store the data in the client machine 20. For example, the network connection performance data may include a number of parameters related to a user, software and hardware configurations of the client machine 20, a user location, a network access location (e.g., a location dialed by modem), timing related to various operations in a connection process (e.g. quality and speed), POP related information, client and server IP addresses, baud rates, error codes reflecting connection errors, or the like. The network performance data may define selection criteria to which an appropriate weight may be assigned.
The error codes returned to the user upon a connection attempt may broadly be divided into three exemplary categories namely (1) successful dial in connection, (2) user errors and (3) network problems. The user errors typically occur due to a user name and password problems, missing or disconnected modems, incorrect dialing codes, or incorrect or hand-edited phone numbers. Examples of the user errors include:
Examples of network errors include:
When a successful network connection with one of the POPs is established, the SQM agent 28 may transmit the collected data to the server machine 35. In one embodiment, the SQM agent 28 may collect network connection performance data relating to every POP via which it tries to establish a network connection. Upon establishment of a successful network connection with one of the POPs, the SQM agent 28 may compose a message comprising network connection performance data along with software and hardware configuration data and the POP identification numbers to which the network connection performance data relates and transmits the message to the database server 38 (see
The web server 36, upon receiving the collected data at the server machine 35 may invokes the load servlet 40 that stores received data in a RAW SQM table. The data may then be processed and, in response thereto, the system and method may change the weight associated with each selection criteria. The updated selection criteria, weights associated with each selection criteria and bias may be communicated to the connection application 26.
Phonebook Quality Generator
The management system 52 may also include an access point or phonebook quality generation tool 100 (e.g. a Java application). The tool 100 may use the SQM data for determining the quality as well as the speed of each access point. The tool 100 may update a POP table (see below) with calculated values. Typically, this tool 100 is run before the phonebooks (including the telephone numbers of the POPs) are published by a phonebook server 101.
Quality Rating
As mentioned above, the quality rating of the access point may be defined as the percentage of successful connections to this access point out of the total number of connection attempts of which failures are not due to user error:
Q=(Total Success)/(Total Calls−User Errors)*100.
An error_code field (see Table VI below) of the SQM data may specify the error, if any that occurred during a connection attempt. In one embodiment, the SQM_ERROR_CODES table categorizes the errors as follows:
USER: The error was caused by the User.
In one embodiment, the phonebook quality generator tool 100 calculates the quality rating (Q) of each POP 24 using the above formula and then updates the quality_rating field of the POP table (Table V above).
Speed of Connection Provided by Selected Access Point
The speed provided by the access point may be defined as the speed of the particular access point relative to the speed of all access points of the same access_type (DIAL_UP, ISDN, WIRED Broadband, Wireless (802.11b) Broadband, Wireless (802.11a) Broadband, or the like):
S=(Baud−Min(Baud))/(Max(Baud)−Min(Baud))*100.
The baud_rate field of the SQM table may specify the negotiated speed of the connection. The phonebook quality generator tool 100 may calculate the speed rating of each access point using the above formula and update the speed field of the POP table (Table V above).
Phonebook Commitment Generator
The management system 52 also includes a phonebook commitment generator tool 104 to provide a commitment rating associated with each network or access point provider. The commitment rating may be defined as the percentage of commitment to the provider remaining in the period relative to the percentage of margin remaining for all other commitments in this period:
C=((Commit−COGS)/TotalCommit)*100,
where COGS or the Cost of goods may be the cost paid to the network provider by the roaming access service provider for providing Internet access to the user.
The total commitment may be calculated using the following formula:
TotalCommit=Sum(Commit−COGS) for ALL providers.
Commit is the commitment for the current period. The phonebook commitment generator tool 104 obtains the service provider commitment details from a PROVIDER_COMMITMENT table (Table VI below) from a provisioning database 106 of a provisioning system. A network quality group may initially populate the table when a contract is negotiated and each service provider is provisioned. The commitment_this_period field may be updated by the phonebook commitment generator tool 104 whenever it runs.
Cost of Goods
The Cost of goods (COGS) may be calculated dependent upon each type of service provider. The roaming access provider may, for example, include one or more of the following types of service providers:
COGS for the Flat rate providers may be calculated as the total usage provided for a current period. The usage provided by the service provider may be available in a billing event (BE) table (see Table VII below) in a clearing database 108 of a clearing system. The COGS may be calculated by summing up the total amount of services provided by the service provider (payee_id=provider_id) for the current period (date between cycle_start_date and cycle_end_date).
The COGS for the fixed rate providers may be calculated as follows:
HoursUsed*(Cost/Month)/(Port*Hours/Month).
The HoursUsed may be the usage provided for the current period. This may be obtained by adding the Unit_Count field from the BE table (Table VII above) for the service provider (payee=provider_id) for the current period (date between cycle_start_date and cycle_end_date). The Cost and the number of ports may be obtained from the provisioning database 106 of the provisioning system. Hours/Month may be the total number of hours for the current period (24*the number of days in the period).
Total commitment or TotalCommit may be defined as follows:
TotalCommit=Sum(Commit−COGS) for ALL providers.
Total commitment may be calculated using the formula described above for all providers, and data from the BE table (Table VII above).
The phonebook commitment generation tool 104 may be a Java application that uses the service provider commitment amounts from the provisioning database 106, and the amount of usage for current account cycle from the clearing database 108, to determine the commitment rating of each access point.
In certain embodiments, the tool 104 updates the POP_COMMITMENT_RATING table (see below) with calculated values. The tool 104 may be run before the phonebooks are published by the phonebook generator tool 102 to the phonebook server 101.
Phonebook Price Generator
The management system 52 includes a phonebook price generator tool 110 that may be used for determining price and profit margin characteristics of each access point. In one embodiment, the tool 110 includes price and margin modules. The tool 110 may update RATE_USAGE and BUY_RATE tables (see Table IX below) with calculated values. The tool 110 may be run before the phonebooks are published by the phonebook generation tool 102 to the phonebook server 101.
The price may be defined as the price of a particular access point relative to the price of all access points in a particular pricing plan:
P=(Price−Min(Price))/(Max(Price)−Min(Price))*100.
When a contract is negotiated and the customer is provisioned, each customer may be assigned a pricing plan. The price paid by a customer may be defined in a RATE_USAGE table (Table IX below).
The RATE_USAGE Table may include a location_group that refers to a collection of access_points priced similarly. The POP table (Table V above) may provide an association between an access point and its location_group. In certain embodiments, the phonebook price generation tool 110 may calculate the pricing_rating of each row in the RATE_USAGE table using the formula shown above and, in response thereto, update the pricing_rating field of the RATE_USAGE table.
The profit margin may be defined as the margin available on the particular access point relative to the margin available on all access points in a particular pricing plan:
M=(Margin−Min(Margin))/(Max(Margin)−Min(Margin))*100.
When a contract is negotiated and a service provider (ISP) is provisioned, the price paid by roaming access service provider to the ISP for access may be defined in a BUY_RATE table (Table X below).
The Phonebook Price Generation tool 110 may calculate the margin_rating of each row in the BUY_RATE table using the formula shown above and update the margin_rating field of the BUY_RATE table.
Provider Selected Weight
The provider selected weight is a factor or criteria that may be selected by the roaming access service provider to handle abnormal cases. The provider selected weight may be an integer from 0 to 100. The POP table (Table V above) may thus include a provider_selected_weight field. This field may be set to 0 by default. A network quality group of the roaming access service provider may choose to alter this value based on a criteria not covered explicitly. In certain circumstances the network quality group may utilize a Hydra-based system 112 as a data management tool for setting this value which is stored in a POP database 114.
Phonebook Generation
As mentioned above, the management system 52 includes the phonebook generation tool 102 for creating the phonebook and phonebook delta files (files to update or change the phonebook resident on the client machine 20). In one embodiment, the tool 102 is a Java application and may use an Oracle™ database to store and manipulate the phonebook data. The Java program may communicate with the Oracle™ database using, for example, Java DataBase Connectivity (JDBC) protocol.
The tool 102 publishes the phonebook and delta files to the phonebook server 101, which may be the web server 36 (see
Referring in particular to
The phonebook generation tool 102 may determine changes to the POP database 114 since its last run and generate a full phonebook and delta file (see block 124) for each customized phonebook, wherein the POPs listed in the phonebook are ordered based upon the selection criteria. The full phonebook file may contain all non-filtered access points with the customized price. The delta files may contain cumulative changes to the phonebook since the version was published.
Phonebooks may be customized for individual clients or customers. Thus, individual phonebooks may be managed so that the roaming access service provider can influence the operation of the connection application 26 used by a particular client. The method 120, when generating a phonebook, gets the next phonebook to be generated at block 126. Thereafter, the computed list of POPs (see block 124) is filtered at block 128 based on filters defined by the roaming access service provider, and filtered again at block 130 based on filters defined by the customers. At block 132 pricing plan changes of the roaming access service provider are determined and customer pricing rules are applied to the list of POPs. Thereafter, the prioritized order of the POP is determined based on the selection criteria as shown at block 134. New, modified and deleted POPs may be determined at block 136.
As shown at blocks 138 and 140, the phonebooks may then be published to the web server 36 with the following exemplary tree structure:
The version number N may be the new version being published and a phonebook_id may identify the customized phonebook used by the connection application 26 provided by the roaming access service provider. Delta files from version 1 through to version N-1 may be printed. If the size of a delta file is more than 75% of the size of the phonebook, the delta file may then not be generated and the entire phonebook and not merely the changes is printed.
In certain embodiments, the phonebook generator 102 utilizes the POP, RATE_USAGE, and BUY_RATE tables (see above) while generating the phonebook files. This data may then be managed via the Hydra-based system 112, which may be part of a payment settlement system.
In the embodiment depicted in the drawings, the phonebook generation tool 102 also calculates the sort order of each access point using the formula described above. The phonebook generation tool 102 may print the sort order in a dialer_sort_order field of the phonebook. The constants (bias) may be set at a global level (customer_id=roaming service provider's Customer_id) for some or all selection criteria. In addition or instead, the constants (bias) may be adjusted on a customer level. For example, such circumstances may arise where a roaming service provider weighs profit margins heavily, but a particular customer has a high Service Level Agreement. The customer's profile may then have Cm lowered and Cq raised.
The phonebook 30 on the client machine 20 may be automatically updated after the user establishes a successful connection to the Internet 18. The updating of the phonebook 30 may be performed by modifying an existing phonebook 30 stored on the client machine 20, or may be performed by uploading a complete and new phonebook 30, as generated on the phonebook generation tool 102. For example, upon the generation of a complete and new phonebook 30, the new phonebook 30 may be “pushed out” from the phonebook server 101 to multiple client machines 20. In one embodiment of the present invention, the user may choose not to receive an automatic update of the phonebook 30. In this embodiment the user may access a Web site maintained at the server machine 35 (see
The computer system 300 includes a processor 302, a main memory 304 and a static memory 306, which communicate with each other via a bus 308. The computer system 300 may further include a video display unit 310 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 300 also includes an alphanumeric input device 312 (e.g. a keyboard), a cursor control device 314 (e.g. a mouse), a disk drive unit 316, a signal generation device 318 (e.g. a speaker) and a network interface device 320.
The disk drive unit 316 includes a machine-readable medium 322 on which is stored a set of instructions (i.e., software) 324 embodying any one, or all, of the methodologies described above. The software 324 is also shown to reside, completely or at least partially, within the main memory 304 and/or within the processor 302. The software 324 may further be transmitted or received via the network interface device 320. For the purposes of this specification, the term “machine-readable medium” shall be taken to include any medium which is capable of storing or encoding a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methodologies of the present invention. The term “machine-readable medium” shall accordingly be taken to included, but not be limited to, solid-state memories, optical and magnetic disks, and carrier wave signals.
In the foregoing specification the present invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made to the specific exemplary embodiments without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.