Abstract:
An arrangement is provided for exposing TCP/IP profiles to a client application operating in a mobile computing environment where each profile comprises a set of TCP/IP configuration parameters that are mapped to a specific network type. An application programming interface (“API”) enables the client application to propagate configuration parameters in a selected TCP/IP profile to a TCP/IP layer in a communication protocol stack that resides on a mobile device. The TCP/IP configuration parameters are applied to data communications with a remote terminal over a network that is comprised of several links and which typically includes a wireless link.

Description:
BACKGROUND 
     Wireless networks, such as GPRS/EDGE (General Packet Radio Services/Enhanced Data rates for GSM Evolution), supporting mobile devices typically use a radio link that provides a reliable delivery mechanism for data packets. Such reliable delivery is provided even in the presence of impairments that may occur, for example, as a result of handoffs across base stations or when a mobile device is moved through a tunnel. The GPRS/EDGE radio link ensures the integrity of received data through the implementation of two reliable modes of operation: RLC (radio link control) acknowledged and LLC (logical link control) acknowledged mode operations. The RLC acknowledged mode is typically used by default to ensure that the data received by/from the mobile device is without error. LLC acknowledged mode is typically an optionally utilized feature. This protocol ensures that all LLC frames are received without error by verifying a checksum for each LLC frame. In case the checksum fails, the frame is discarded. Unacknowledged packets are then retransmitted and correct receipt of all LLC frames must be acknowledged. Due to impairments, RLC segments retransmission is expected which can propagate into delays in assembly of the LLC frames and IP (Internet Protocol) segments. 
     At a receiving terminal device, TCP/IP (Transport Control Protocol/internet Protocol) layer in a communication protocol stack disposed in the terminal requires that all RLC frames in an LLC frame, and all LLC frames, be received for assembling an IP segment before sending an acknowledgement to the mobile device. As a result of this flow control managed at the TCP/IP layers, it is possible for assembly delay of an IP segment at the lower RLC/LLC layers to cause TCP/IP to back off on the transmission data rate and attempt retransmission of packets it believes have been lost. Such slow down of transmission can eventually lead to significant end-to-end network performance degradation. 
     This Background is provided to introduce a brief context for the Summary and Detailed Description that follow. This Background is not intended to be an aid in determining the scope of the claimed subject matter nor to be viewed as limiting the claimed subject matter to implementations that solve any or all of the disadvantages or problems presented above. 
     SUMMARY 
     An arrangement is provided for exposing TCP/IP profiles to a client application operating in a mobile computing environment where each profile comprises a set of TCP/IP configuration parameters that are mapped to a specific network type. An application programming interface (“API”) enables the client application to propagate configuration parameters in a selected TCP/IP profile to a TCP/IP layer in a communication protocol stack that resides on a mobile device. The TCP/IP configuration parameters are applied to data communications with a remote terminal over a network that is comprised of several links, and which typically include a wireless link. 
     In various illustrative examples, the TCP/IP configuration parameters include values for connection timeout, send timeout, and receive timeout. The timeout values are each configured to at least be greater than the average propagation delay in the wireless link which reduces the TCP/IP connection handshake and retransmission overheads. Data throughput is substantially accelerated using the present TCP/IP profiles. In addition, client applications may be arranged with link-awareness to thereby enhance data transmission performance through the application of a TCP/IP profile to the TCP/IP layer exposed by the API. A client application may switch network connections and apply a new TCP/IP profile to enhance the performance of the new connection. Client applications include, for example, small footprint databases which run on a mobile device host that occasionally need to synchronize with a remote terminal to send and receive updates or changes, or replicate a copy of a remote database on the mobile device. 
     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 as an aid in determining the scope of the claimed subject matter. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a first illustrative network topology for a wireless mobile data network environment showing a mobile device, a network comprising multiple links, and a remote terminal; 
         FIG. 2  is a second illustrative network topology for a wireless mobile data network environment showing a mobile device coupled to a gateway, a network comprising multiple links, and a remote terminal; 
         FIG. 3  is a simplified diagram of an illustrative architecture for a host mobile device; 
         FIG. 4  is a graph showing remote data access throughput as a function of data batch size for a fixed HTTP (Hypertext Transfer Protocol) connection retry timeout value of 120 seconds with varying TCP/IP send and receive timeout values; and 
         FIG. 5  is a flowchart of an illustrative method for enhancing data throughput from a link-aware client application running in a wireless mobile data network environment. 
     
    
    
     DETAILED DESCRIPTION 
     TCP/IP is one of the most widely used transport protocols for non-real-time Internet applications like web-browsing, file transfer and email. It provides a connection-oriented end-to-end service ensuring reliable data transfer. TCP/IP implements flow control in the Internet to avoid congestion. This is achieved by various mechanisms, including slow start and congestion avoidance, that work to achieve as high a data throughput rate as possible, but which then back off as soon as congestion occurs. 
     One application that has influenced protocol refinements is the World Wide Web on the Internet, which uses HTTP (Hypertext Transfer Protocol) running over TCP/IP. The wide use of the Web and Internet has emphasized the need to enhance HTTP performance. Persistent-connection support, recently standardized in HTTP/1.1, allows HTTP to re-use a single TCP/IP connection across multiple transactions to the same terminal device or server. 
     The radio link used in wireless mobile data environments suffers from time-varying characteristics, shadowing, interference and relatively high bit error rates which can lead to packet loss and delays resulting in TCP/IP timeouts. However, the root cause for the loss and delays is not network congestion but rather impairments on the radio link itself. Accordingly, the interaction between the protocol layers supporting wireless mobile data transmission, for example those used in a GPRS network, can negatively interact with the TCP/IP layer which supports data communication over the Internet portion of a network. 
     Turning now to the drawings where like reference numerals indicate like elements,  FIG. 1  is a first illustrative network topology  102  for a wireless mobile data network environment showing a mobile host device  110 , a network  125  comprising multiple links, and a remote terminal  138 . The mobile host device  110  is representative of the portable electronic devices currently available that support wireless data connectivity. Accordingly mobile host device  110  may be selected from one of mobile phone, PDA (personal digital assistant), smart phone, personal computer (“PC”), pocket PC, laptop computer, tablet PC, portable media player, game console, or portable game device, as required by a specific application of link-aware throughput acceleration profiles. 
     Network  125  is utilized to provide end-to-end connectivity between mobile host device  110  and the remote terminal  138 . In this illustrative example, remote terminal  138  is a server that is arranged to host a database. Network  125  typically comprises several links. As shown in  FIG. 1 , network  125  includes a wireless mobile data network link  142  and an Internet network link  145 . Mobile host device  110  communicates wirelessly with the mobile data network link  142  through a base station  155  as indicated by arrow  158 . 
     Wireless mobile data network  142  is arranged using one of a variety of alternative wireless network protocols including, for example, GPRS, EDGE, HSDPA (High-Speed Downlink Packet Access), or UMTS (Universal Mobile Telecommunications System). In other alternative arrangements, a wireless networking protocol conforming to the Institute of Electrical and Electronics Engineers IEEE 802.11 (also known as “Wi-Fi”) or wireless Ethernet is usable. Traditional wired networking protocols including dial-up networking over telephone lines and wired Ethernet may also be used in some applications of link-aware throughput acceleration profiles. 
       FIG. 2  is a second illustrative network topology  202  for a wireless mobile data network environment showing the mobile host device  110  coupled to a gateway  219 . Gateway  219  functions as an intermediary to provide connectivity between the mobile host device  110  and wireless mobile data network  142 . Gateway  219  is a laptop computer with a wireless GPRS network access card (not shown) that interfaces with the laptop&#39;s PCM/CIA (Personal Computer Memory/Card International Association) or PC Card slot. A cable  225  such as Universal Serial Bus (“USB”) cable may be used to couple the gateway  219  to the mobile host device (as indicated by reference numeral  110 A). Alternatively, a short range wireless protocol such as a Bluetooth link  231  is used to couple the gateway  219  to the mobile host device (as indicated by reference numeral  110 B). 
       FIG. 3  is a simplified diagram of an illustrative architecture  302  for the host mobile device  110  shown in  FIGS. 1 and 2 . Architecture  302  includes a number of abstracted logical objects that are typically implemented in software, firmware, or a combination of software and firmware that is resident on the host mobile device  110 . A GPRS protocol stack  304  is utilized in architecture  302  to provide the reliable data transfer using the RLC and LLC acknowledged modes noted above. GPRS protocol stack  304  includes a physical layer  306 , MAC (media access control) layer  309 , RLC layer  312 , LLC layer  314 , and an SNDCP (Sub Network Dependent Convergence Protocol) layer  316 , as shown. 
     A number of client applications  318   1-N  are typically hosted by host mobile device  110  including, for example, communication applications to support voice and data communications, email applications, web-browsers, etc. A small footprint database is also supported by the host mobile device  110  that is designed to work in a mobile environment where resources are typically limited. 
     An application programming interface  322  (“API”) is arranged as an intermediary between the applications  318  and the TCP layer  325 A and IP layer  325 B (collectively referred to as TCP/IP layer  325 ). The API  322  exposes TCP/IP parameters to the applications  318 . The TCP/IP parameters are applied by the TCP/IP layer  325  to manage a communication session between the mobile host device  110  and remote terminal  138  over network  125  ( FIG. 1 ). In this illustrative example, the TCP/IP parameters include timeouts including a connect timeout, a send timeout, and a receive timeout. 
     The connect timeout value is set or retrieved (for example from a library of stored parameter values) when an application  318  invokes a method INTERNET_OPTION_CONNECT_TIMEOUT which sets or retrieves an unsigned long integer value that contains the timeout value (in milliseconds) for Internet connection requests. If the connection request takes longer than this timeout value, the request is canceled. When attempting to connect to multiple IP addresses for a single host (referred to as a “multihomed” host that has more than one connection to a network), the timeout limit is cumulative for all of the IP addresses. 
     The send timeout value is set or retrieved when an application  318  invokes a method INTERNET_OPTION_SEND_TIMEOUT (or alternatively, INTERNET_OPTION_DATA_SEND_TIMEOUT or INTERNET_OPTION_CONTROL_SEND_TIMEOUT) which sets or retrieves an unsigned long integer value, in milliseconds, that contains the timeout value to send a request. If the send takes longer than this timeout value, the send is canceled. 
     The receive timeout value is set or retrieved when an application  318  invokes a method INTERNET_OPTION_RECEIVE_TIMEOUT (or alternatively, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT or INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT) which sets or retrieves an unsigned long integer value that contains the timeout value, in milliseconds, to receive a response to a request. If the response takes longer than this timeout value, the request is canceled. 
     Table 1 below provides three sets of exemplary timeout values for both an HTTP connection retry timeout and the TCP/IP parameters discussed above. Each set of timeout values is mapped to a specific network type including high, medium, and low bandwidth networks (for which examples are given for each type). The values provided in Table 1 have been empirically shown to accelerate data throughput over mobile wireless data networks by as much as 25-35%. The values are generally selected to ensure that the timeouts exceed the average propagation latency for transmission over a wireless network link. However, it is emphasized that the specific values selected may be subject to some variability due to conditions and impairments found in a specific link or network. Accordingly, an actual optimum value for a particular application of link-aware acceleration profiles may lie within a range (e.g., ±10%) of the nominal values shown in Table 1. 
     
       
         
               
               
             
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 Network Type 
                 Timeout Values 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 High Bandwidth  
                 HTTP connection retry timeout 
                 30 
                 s 
               
               
                 Networks (e.g., 
                 TCP/IP connect timeout 
                 3000 
                 ms 
               
               
                 Ethernet and USB) 
                 TCP/IP send timeout 
                 1000 
                 ms 
               
               
                   
                 TCP/IP receive timeout 
                 1000 
                 ms 
               
               
                 Medium Bandwidth  
                 HTTP connection retry timeout 
                 60 
                 s 
               
               
                 Networks (e.g., 
                 TCP/IP connect timeout 
                 6000 
                 ms 
               
               
                 IEEE 802.11 wireless) 
                 TCP/IP send timeout 
                 3000 
                 ms 
               
               
                   
                 TCP/IP receive timeout 
                 3000 
                 ms 
               
               
                 Low Bandwidth  
                 HTTP connection retry timeout 
                 120 
                 s 
               
               
                 Networks (e.g., mobile 
                 TCP/IP connect timeout 
                 12000 
                 ms 
               
               
                 data networks and 
                 TCP/IP send timeout 
                 6000 
                 ms 
               
               
                 dial-up)  
                 TCP/IP receive timeout 
                 6000 
                 ms 
               
               
                   
               
             
          
         
       
     
       FIG. 4  is a graph  400  showing remote data access throughput as a function of data batch size for a fixed HTTP connection retry timeout value of 120 seconds with varying TCP/IP send and receive timeout values. Fourteen curves are plotted in  FIG. 4  corresponding to the timeout values shown in Table 2 below. 
     
       
         
               
               
               
             
               
               
               
             
               
               
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 Curve No. 
                 Send Timeout Value 
                 Receive Timeout Value 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1 
                 None 
                 None 
               
             
          
           
               
                 2 
                 2 
                 s 
                 2 
                 s 
               
               
                 3 
                 3 
                 s 
                 3 
                 s 
               
               
                 4 
                 4 
                 s 
                 4 
                 s 
               
               
                 5 
                 5 
                 s 
                 5 
                 s 
               
               
                 6 
                 7 
                 s 
                 7 
                 s 
               
               
                 7 
                 10 
                 s 
                 10 
                 s 
               
               
                 8 
                 20 
                 s 
                 20 
                 s 
               
               
                 9 
                 50 
                 s 
                 50 
                 s 
               
               
                 10 
                 100 
                 s 
                 100 
                 s 
               
               
                 11 
                 360 
                 s 
                 360 
                 s 
               
               
                 12 
                 400 
                 ms 
                 400 
                 ms 
               
               
                 13 
                 700 
                 ms 
                 700 
                 ms 
               
               
                 14 
                 1 
                 s 
                 1 
                 s 
               
               
                   
               
             
          
         
       
     
     As shown in  FIG. 4 , the fourteen curves fall essentially into two groups: curves  2 - 11  are positioned noticeably above curves  1 ,  12 , and  13 . Curve  13  is specifically indicated in  FIG. 4  as being positioned somewhat between the upper curves and the remaining curves  1  and  12  in the lower group. 
       FIG. 5  is a flowchart of an illustrative method  500  for enhancing data throughput from a link-aware client application running in a wireless mobile data network environment. The method starts at block  502 . At block  505 , the application is provided with network awareness (i.e., determines the availability of a network). The application may become aware of and adapt to changing network connectivity scenarios in the environment by performing a query and/or being notified of changes to network connectivity and network capabilities. At block  511 , an HTTP connection retry timeout value is selected. In this illustrative example, the value is pulled from a library of values that is mapped to the discovered capabilities of the available network by invoking a command through an API (e.g., API  322  in  FIG. 3 ) to expose the value. Similarly, one or more TCP/IP parameters (e.g., connect timeout, send timeout, and receive timeout) may be exposed via the API, as indicated in block  518 . The API then propagates the selected parameter values to the TCP/IP layer as shown at block  525 . The parameter values are used to manage a communication session between the local host and remote device that is performed over the network as shown at block  531 . If the application switches a network connection, then the steps shown in  FIG. 5  are repeated for each new network connection utilized. The illustrative method  500  ends at block  542 . 
     Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.