Abstract:
A system for classifying an Internet protocol (IP) address, including: a data store for storing client profile data associated with a client, the client profile data including an Internet protocol address of a server; and a processor for receiving a resolved Internet protocol address from the client, and determining whether the resolved Internet protocol address corresponds to a second server associated with the first server. The data store includes configuration data representing Internet protocol addresses corresponding to servers in a server farm, and the processor determines that the servers are associated and part of the server farm when the resolved IP address corresponds to one of the IP addresses of the configuration data. The resolved IP address is received with a client request, and the request is allowed when the second server is associated with the first server.

Description:
BACKGROUND 
       [0001]    1. Technical Field 
         [0002]    The present invention relates to a system and method for classifying an Internet Protocol address, that is particularly useful for determining if the address corresponds to a server of a server farm. 
         [0003]    2. Description of the Related Art 
         [0004]    In a typical networked computing environment, a user may have a computer which connects via a local network (e.g. LAN or WAN) and a local network server to the Internet. In some environments, a proxy server (which may be coincident with the local network server) intercepts and interprets commands being transmitted between the Internet and a client, e.g. an e-mail client or MUA (Mail User Agent) running on a user&#39;s computer. The proxy server may monitor the Internet Protocol (IP) addresses being accessed by the client for the purposes of, for example: security filtering; or providing the client with access to files in a local cache rather than on an external server (i.e. a server accessible only via a network such as the Internet). 
         [0005]    Many large service providers have a farm of external servers providing a given service, which although only a single server name is published, might have addresses as follows: 
         [0000]    
       
         
               
               
               
             
           
               
                   
                   
               
               
                   
                 Server name 
                 IP address 
               
               
                   
                   
               
             
             
               
                   
                 pop1.mailsp.com 
                 11.11.11.11 
               
               
                   
                 pop2.mailsp.com 
                 11.11.11.12 
               
               
                   
                 pop3.mailsp.com 
                 11.11.11.13 
               
               
                   
                 pop4.mailsp.com 
                 11.11.11.14 
               
               
                   
                   
               
             
          
         
       
     
         [0006]    When attempting to communicate with a server in a server farm, a client will start with only the published server name, e.g. ‘pop.mailsp.com’. This server name is resolved by the Domain Name Service (DNS) into one of the IP addresses in the server farm. A proxy server monitoring the IP addresses being accessed by the client may not recognize the particular IP address as belonging to a server farm; for example, the proxy server may not recognize that an IP address corresponds to an external email server if the external email server is part of a server farm, and therefore has multiple potential IP addresses. If the proxy server does not recognize the IP address, it may fail to function desirably: for example, a proxy server may fail to realize the IP address corresponds to a particular email server or perform access restriction. 
         [0007]    It is desired to address the above, or at least provide a useful alternative. 
       BRIEF SUMMARY 
       [0008]    In accordance with one embodiment, there is provided a system for classifying an Internet protocol (IP) address, including: 
         [0009]    a data store for storing client profile data associated with a client, said client profile data including a first Internet protocol address of a first server; and 
         [0010]    a processor for receiving a resolved Internet protocol address from the client, and determining whether the resolved Internet protocol address corresponds to a second server associated with the first server. 
         [0011]    One embodiment provides a method for classifying an Internet protocol (IP) address, including: 
         [0012]    storing identifying data for a first server; 
         [0013]    receiving an Internet protocol address from a client; and 
         [0014]    determining whether the Internet protocol address corresponds to a second server associated with said first server, using said identifying data. 
         [0015]    One embodiment provides a method performed by a proxy server, including: 
         [0016]    storing identifying data for a server farm; 
         [0017]    receiving a Internet protocol (IP) address from a client; and 
         [0018]    determining whether said Internet protocol address corresponds to a server of said server farm, using said identifying data. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0019]    Embodiments are hereinafter described, by way of example only, with reference to the accompanying drawings in which: 
           [0020]      FIG. 1  is an arrangement of network components including a proxy server configured according to a preferred embodiment of the present invention; 
           [0021]      FIG. 2  is an alternative arrangement of network components including the proxy server; 
           [0022]      FIG. 3  is a schematic diagram of the proxy server; 
           [0023]      FIG. 4  is a flow chart of an access event process wherein the proxy server intercepts an IP address from a client; and 
           [0024]      FIG. 5  is a flow chart of a process performed by the proxy server for classifying an IP address. 
       
    
    
     DETAILED DESCRIPTION 
       [0025]      FIGS. 1 and 2  show how a proxy server  102  can be configured to monitor the IP addresses being accessed by a client  108 : the proxy server  102  may lie between the client  108  and the Internet  106 , as shown in  FIG. 1 , or may be connected to a local network server  202 , as shown in  FIG. 2 . The proxy server  102  is able to monitor IP addresses but not server names. The client  108  may be any client software running on a computer system or device that is able to establish an IP connection or session. The client  108  may be an e-mail client, such as Outlook by Microsoft Corporation or Mail by Apple, Inc., or a web browser, such as Internet Explorer, Safari or Firefox. 
         [0026]    The proxy server  102 , as shown in  FIG. 3 , includes a proxy server processor  302 , for performing processes such as detecting one or more IP addresses being accessed by the client  108 , and a client profile store  304 . The client profile store  304  includes network configuration data and client profile data for users, such as, for example, a username, and password for the user and an IP address of an external server  104 . The client profile data may be used by proxy server  102  to access the external server  104  and act as a proxy for the client  108 . The client profile data may also be used by the proxy server  102  to monitor when the client  108  attempts to access an external server  104  on the network  106  by recognizing IP addresses in requests from the client  108 . The proxy server  102  can be implemented using a number of different hardware and/or software components. The server  102  may include a standard computer server, such as that produced by IBM Corporation or Apple, Inc., that runs an operating system, such as Unix, Linux or Mac OS X. The processor  302  may be provided by computer program code stored on the memory of the server, and written in a language such as C++, Perl or Ruby. The client profile store  304  can be provided by a database server (such as MySQL) that is used to maintain and provide access to the data held on the store  304  using memory of the server. The processes performed by the proxy server  102  can alternatively be performed, at least in part, by dedicated hardware circuits, such as ASICs or FPGAs, to replace at least part of the computer code and provide faster processing speeds. 
         [0027]    The client  108  is connected to the proxy server  102  when requesting access to data on the external network  106 . The proxy server  102  is configured with client profile data in the client profile store  304 , and the client profile data may have been previously provided through communication between the client  108  and the proxy server  102 , or via manual configuration of proxy server  102 . 
         [0028]    The processor  302  of the proxy server  102  performs an access event process described below with reference to  FIGS. 4 and 5 . The process begins at step  402  with the proxy server  102  having client profile data, which includes a stored IP address known to correspond to a known external server  104 . At step  404 , the client wishing to access a server on the network  106  uses a published server name for the server, e.g. pop.mailsp.com, to send a DNS request to the Domain Name System (DNS) and obtains a resolved IP address for that server. As mentioned previously, the DNS may provide different IP addresses for the same given server name when the server name corresponds to a server farm which contains many actual servers. At step  406 , the client sends a request containing the resolved IP address to the proxy server  102 . The proxy server receives the request from the client  108  and determines whether the resolved IP address corresponds to the same server farm as the IP address stored in the client profile data. To perform this determination, the proxy server  102  carries out an IP address classification process at step  408 , as described below. If the resolved IP address is found to correspond to a server in the same server farm as the server with the first IP address, the proxy server will recognize the client request and process the request accordingly. The proxy server may process a request from the client  108  to servers of the server farm in a particular manner. For example, only requests to servers of that server farm will be allowed or a particular download procedure may be performed for servers of that server farm, as described in the International (PCT) application entitled “Proxy Server” filed on the same day by the Applicant as this application (and herein incorporated by reference). If, however, the resolved IP address is not recognized at step  410 , the proxy server  102  initiates an error handling procedure at step  412   
         [0029]    The IP address classification process  408 , as shown in  FIG. 5 , determines whether a resolved IP address is for a server in the same server farm as a stored IP address. The process  408  compares the resolved IP address to a number of possible matching addresses in successive steps  502 ,  504 ,  508  and  510 . Firstly, the resolved IP address (i.e. the address found in the client request at step  406  in  FIG. 4 ) is compared to an IP address stored in the client profile data in client profile store  304 —if the two IP addresses match, it is clear that they refer to the same server, and thus the same server farm. If, however, the IP addresses do not match at step  502 , the resolved IP address is compared to a list of addresses of external servers that are known to correspond to one or more server farms; a list for servers in a server farm may be input to the memory of proxy server  102  manually, or may be automatically provided by another process. If the resolved IP address is found to correspond to one of the IP addresses in a server list that also contains the stored IP address of the client profile data, then both are considered to point to the same server farm. If the resolved IP address is not found listed in the same server farm as the stored IP address of the client profile data, the domain name system (DNS) is used to search for possible matches. 
         [0030]    At step  506 , the proxy server  102  performs a reverse DNS lookup process, as described in the Internet Engineering Task Force (IETF) RFCs  1035  and  2317  (http://www.ietf.org/rfc.html), to determine the server name corresponding to the resolved IP address and the server name corresponding to the stored IP address of the client profile data. If the suffix of the server name (e.g. ‘mailsp.com’) returned using the resolved IP address matches the suffix of the server name returned using the stored address at step  508 , the IP addresses are held to be in the same server farm. If the suffixes do not match at step  508 , the proxy server may truncate the suffixes to compare only the right most portions of the server names (e.g. mailsp.com or melbuni.edu.au) at step  510 ; if the truncated suffixes of the server names match, it is possible the IP addresses are from the same server farm. If, however, even the truncated suffixes of the server names do not match, then the proxy server concludes in step  512  that the IP addresses are not referring to the same server farm. The comparison and truncation steps ( 508 ,  510 ) may be configured to reach an arbitrary level of truncation, or an arbitrary length of the suffix; other examples of suffixes may be: public.mailsp.com, mail.dhs.nsw.gov.au, or even .au (although short suffixes will be less likely to identify a single server farm). 
         [0031]    The classification process is not constrained by the size of the server groups, the nature of the protocols supported. Furthermore, the process is not dependent on the proxy  102  being able to intercept any protocol other than that which it was designed to intercept, e.g. it is not dependent on being able to intercept DNS traffic. 
         [0032]    The classification process  408  can be illustrated using an example of a search for an email server ‘pop5.mailsp.com’ that lies in a server farm. The client  108  is configured to retrieve email from an external server  104  with the server name: ‘pop.mailsp.com’ using the POP3 protocol. The proxy server  102  has a stored client profile, including the client&#39;s username, password and IP address of its email server, which is ‘11.11.11.14’. Furthermore, the server farm containing the email server has a number of IP addresses, including the following which are listed in the memory of proxy server  102 : 11.11.11.11, 11.11.11.12, 11.11.11.13 and 11.11.11.14. 
         [0033]    Unknown to the proxy server  102 , the DNS currently resolves the following server names to the following IP addresses, all corresponding to the ‘pop.mailsp.com’ server farm: 
         [0000]    
       
         
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 pop1.mailsp.com 
                 11.11.11.11; 
               
               
                   
                 pop2.mailsp.com 
                 11.11.11.12; 
               
               
                   
                 pop3.mailsp.com 
                 11.11.11.13; 
               
               
                   
                 pop4.mailsp.com 
                 11.11.11.14; and 
               
               
                   
                 pop5.mailsp.com 
                 11.11.11.15. 
               
               
                   
                   
               
             
          
         
       
     
         [0034]    In this example, the client  108  attempts to access ‘pop.mailsp.com’. The client uses the DNS to resolve ‘pop.mailsp.com’ (for this given request), to 11.11.11.15. When the proxy server  102  detects that client  108  is trying to access IP address 11.11.11.15 using the POP3 protocol, it attempts to match this resolved address with the stored address of the client profile data (i.e. ‘11.11.11.14’)—at step  502  in FIG.  5 —but it does not match. Then the proxy attempts to match the resolved address and the client profile address with a stored list of servers corresponding to the same server farm—at step  504 ; in this case, although the IP address of another server (‘11.11.11.14’) is stored for the ‘pop.mailsp.com’ server farm, the new address (‘11.11.11.15’) is not. 
         [0035]    At the next step,  506 , the proxy server  102  performs reverse DNS lookup to find a server name corresponding to the resolved IP address. In this case, the reverse DNS process, returns ‘pop5.mailsp.com’. At the following step  508 , the suffixes of the two names are then compared; in this case, ‘mailsp.com’ is the suffix in both cases, so the names are found to match, and the proxy server  102  treats the request from client  108  as if it were for the external server  104  that is normally used (whether this match identifies a server farm match depends on the selected comparison of the proxy server and the configuration of the server farm). The client profile stored on the proxy server is updated to reflect that the IP address of its email server is now ‘11.11.11.15’. Furthermore, the IP addresses for this server farm, listed in the memory of the proxy server, is amended to include the IP address ‘11.11.11.15’. 
         [0036]    An example of the control flow and the data used is provided in the accompanying Appendix. 
         [0037]    The processes performed by the proxy server  102 , as described herein, can advantageously be used when the proxy server  102  is configured so as to form a proxy server as described in the patent specification of the International (PCT) patent application entitled “Proxy Server” filed by the Applicant on the same day as this application (and which is herein incorporated by reference). 
         [0038]    The various embodiments described above can be combined to provide further embodiments. These and other changes can be made to the embodiments in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and the claims, but should be construed to include all possible embodiments along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure. 
       APPENDIX 
       [0039]      
         [0000]    
       
         
               
             
               
               
             
               
               
               
             
           
               
                   
               
               
                 Configuration (Profile) Data Stored 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 Client configuration: 
                 Server: pop3.mailsp.com 
               
               
                 Server configuration: 
                 Server farm 
               
             
          
           
               
                 Server farm details: 
                 Server 
                 IP Address 
               
               
                   
                 pop1.mailsp.com 
                 11.11.11.11 
               
               
                   
                 pop2.mailsp.com 
                 11.11.11.12 
               
               
                   
                 pop3.mailsp.com 
                 11.11.11.13 
               
               
                   
                 pop4.mailsp.com 
                 11.11.11.14 
               
               
                 Proxy server&#39;s 
                 Servergroup name: 
                 MailServiceProvider 
               
               
                 configuration data for 
                 Value: 
                 11.11.11.11 
               
               
                 servergroup: 
                   
                 pop1.mailsp.com 
               
               
                   
                   
                 mailsp.com 
               
               
                   
               
             
          
         
       
     
         [0000]    
       
         
               
             
               
               
               
             
           
               
                   
               
               
                 Data and Control Flow 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1. 
                 Client is configured with server 
                 Server name: pop3.mailsp.com 
               
               
                   
                 name. 
               
               
                 2. 
                 Client resolves server name. DNS 
                 DNS system responds with IP address 
               
               
                   
                 system for server farm responds 
                 11.11.11.12, corresponding to 
               
               
                   
                 with an IP address relating to the 
                 pop2.mailsp.com 
               
               
                   
                 server farm. 
               
               
                 3. 
                 Client opens connection using 
                 Client opens POP3 connection to 
               
               
                   
                 appropriate protocol and IP address. 
                 11.11.11.12. 
               
               
                 4. 
                 Proxy server intercepts connection 
                 Proxy server sees 11.11.11.12. 
               
               
                   
                 to server. 
               
               
                 5. 
                 Proxy server does reverse DNS 
                 Lookup yields reverse DNS name 
               
               
                   
                 lookup 
                 pop2.mailsp.com 
               
               
                 6. 
                 Proxy server consults servergroup 
                 Searches through servergroups until it 
               
               
                   
                 data and finds match. 
                 reaches servergroup 
               
               
                   
                   
                 MailServiceProvider. 
               
               
                   
                   
                 Fails to match on 11.11.11.11. 
               
               
                   
                   
                 Fails to match on pop1.mailsp.com. 
               
               
                   
                   
                 Matches on mailsp.com. 
               
               
                 7. 
                 Proxy server consults persistent 
                 The persistent state for servergroup 
               
               
                   
                 state data for correct servergroup. 
                 MailServiceProvider is indexed by 
               
               
                   
                   
                 username. The persistent state data may 
               
               
                   
                   
                 consist, for example, of mailbox content 
               
               
                   
                   
                 information, and be indexed (for each 
               
               
                   
                   
                 servergroup) by the username of the client 
               
               
                   
                   
                 profile data.