Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberWO2000067433 A1
Publication typeApplication
Application numberPCT/US2000/010631
Publication date9 Nov 2000
Filing date19 Apr 2000
Priority date3 May 1999
Publication numberPCT/2000/10631, PCT/US/0/010631, PCT/US/0/10631, PCT/US/2000/010631, PCT/US/2000/10631, PCT/US0/010631, PCT/US0/10631, PCT/US0010631, PCT/US010631, PCT/US2000/010631, PCT/US2000/10631, PCT/US2000010631, PCT/US200010631, WO 0067433 A1, WO 0067433A1, WO 2000/067433 A1, WO 2000067433 A1, WO 2000067433A1, WO-A1-0067433, WO-A1-2000067433, WO0067433 A1, WO0067433A1, WO2000/067433A1, WO2000067433 A1, WO2000067433A1
InventorsShreesha Ramanna, Rajesh S. Pazhyannur, Kurian P. Jacob, Jay P. Jayapalan
ApplicantMotorola Inc.
Export CitationBiBTeX, EndNote, RefMan
External Links: Patentscope, Espacenet
Method and apparatus for optimizing a buffer
WO 2000067433 A1
Abstract
When data transmission is desired, a TCP/IP session is set up between a server (112) and a remote unit (104). As part of a negotiation between the server (112) and remote unit (104), a Maximum Segment Size (MSS) is established for data transmission. Both a gateway (110) and a BSC/MSC (108) vary internal buffer sizes based on the MSS. More particularly, the gateway (110) and the BSC/MSC (108) contain internal buffers that dynamically vary in size based on the negotiated MSS. Data transmission then takes place between the server (112) and the remote unit (104) utilizing the buffers.
Claims  (OCR text may contain errors)
Claims
1. A method for optimizing a buffer, the method comprising the steps of: determining a segment size for a data transmission to produce a determined segment size; and varying a buffer size based on the determined segment size.
2. The method of claim 1 wherein the step of determining the segment size comprises the step of determining a Maximum Segment Size (MSS) .
3. The method of claim 2 wherein the step of determining the MSS comprises the step of determining the MSS for a Transmission Control Protocol/Internet Protocol (TCP/IP) session.
4. The method of claim 2 wherein the step of varying the buffer size based on the determined segment size comprises the step of varying the buffer size to approximately 3*MSS.
5. The method of claim 1 wherein the step of determining a segment size for a data transmission comprises the step of determining a segment size for a Transmission Control Protocol/Internet Protocol (TCP/IP) session.
6. An apparatus comprising: a variable length buffer having data and a segment size as an input and outputting buffered data, wherein the buffered data was previously stored within the variable length buffer only if the variable length buffer contained an amount of data less than a threshold based on the segment size.
7. The apparatus of claim 6 wherein the segment size is a Maximum Segment Size (MSS) .
8. The apparatus of claim 7 wherein the threshold is approximately 3*MSS.
9. The apparatus of claim 6 wherein the buffered data comprises data from a Transmission Control Protocol/Internet Protocol (TCP/IP) session.
Description  (OCR text may contain errors)

METHOD AND APPARATUS FOR OPTIMIZING A BUFFER

Field of the Invention

The present invention relates generally to optimizing a buffer and, in particular, to optimizing a buffer during a Transmission Control Protocol/Internet Protocol (TCP/IP) session.

Background of the Invention

During a file transfer using a Transmission Control Protocol/Internet Protocol (TCP/IP) session, data is usually stored in buffers in order to prevent packet drops. The buffers are usually placed in network equipment having higher data input than output.

Data traffic using TCP/IP over low-speed cellular networks is very sensitive to buffer size. The sensitivity manifests itself through packet drops, timeouts, and eventually, reduced throughput.

Therefore, a need exists for a method and apparatus for a optimizing a buffer that reduces packet drops, timeouts, and improves packet throughput.

Brief Description of the Drawings

FIG. 1 is a block diagram of a communication system in accordance with the preferred embodiment of the present invention. FIG. 2 illustrates TCP/IP throughput based on buffer size for Maximum Segment Sizes (MSSs) of 500, 1000, and 1500 bytes.

FIG. 3 is a block diagram of a buffer in accordance with the preferred embodiment of the present invention.

FIG. 4 is a flow chart illustrating operation of the buffer of FIG. 3 in accordance with the preferred embodiment of the present invention. FIG. 5 is a flow chart illustrating operation of the buffer of FIG. 3 in accordance with an alternate embodiment of the present invention.

Detailed Description of the Drawings

To address the above-discussed need, a method and apparatus for optimizing a buffer is described herein.

In accordance with the preferred embodiment of the present invention, when data transmission is desired, a TCP/IP session is set up between a server and a remote unit. As part of a negotiation between the server and remote unit, a Maximum Segment Size (MSS) is established for data transmission. Both a gateway and a BSC/MSC vary internal buffer sizes based on the MSS. More particularly, the gateway and the BSC/MSC contain internal buffers that dynamically vary in size based on the negotiated MSS. Data transmission then takes place between the server and the remote unit utilizing the dynamically-adjusted buffers. The present invention encompasses a method for optimizing a buffer, the method comprising the steps of determining a segment size for a data transmission, and varying a buffer size based on the determined segment size. In the preferred embodiment of the present invention the step of determining the segment size comprises the step of determining a Maximum Segment Size (MSS) for a TCP/IP session.

The present invention additionally encompasses a method for optimizing a buffer, the method comprising the steps of receiving a packet for a first data- transmission session and receiving a packet for a second data-transmission session. A determination is made to whether a number of packets buffered for the first data-transmission session exceeds a threshold and to whether a number of packets buffered for the second data-transmission session exceeds the threshold. The packet for the first data-transmission session is dropped if the number of packets buffered for the first data-transmission session exceeds the threshold and the packet for the second data-transmission session is dropped if the number of packets buffered for the second data-transmission session exceeds the threshold.

Finally, the present invention encompasses an apparatus comprising a variable length buffer having data and a segment size as an input and outputting buffered data. In the preferred embodiment of the present invention the buffered data was previously stored within the variable length buffer only if the variable length buffer contained an amount of data less than a threshold based on the segment size.

Turning now to the drawings, where like numerals designate like components, FIG. 1 is a block diagram of communication system 100 in accordance with the preferred embodiment of the present invention. In the preferred embodiment of the present invention, communication system 100 utilizes a Code Division Multiple Access (CDMA) system protocol as described in Cellular System Remote unit-Base Station Compatibility Standard of the Electronic Industry Association/Telecommunications Industry Association Interim Standard 95 (TIA/EIA/IS-95B) , which is incorporated by reference herein. (EIA/TIA can be contacted at 2001 Pennsylvania Ave. NW Washington DC 20006) . In alternate embodiments communication system 100 may utilize other analog or digital cellular communication system protocols such as, but not limited to, the Narrowband Advanced Mobile Phone Service (NAMPS) protocol, the Advanced Mobile Phone Service (AMPS) protocol, the Global System for Mobile Communications (GSM) protocol, the Personal Digital Cellular (PDC) protocol, or the United States Digital Cellular (USDC) protocol. Communication system 100 includes remote unit 104, base station 106, Base Station Controller/Mobile Switching Center (BSC/MSC) 108, gateway 110, and server 112. It is contemplated that network elements within communication system 100 are configured in well known manners with processors, memories, instruction sets, and the like, which function in any suitable manner to perform the function set forth herein. As shown, computer 102 and server 112 are coupled to remote unit 104 and internet 114, respectively. In the preferred embodiment of the present invention, base station 106 is preferably a Motorola base station and BSC/MSC 108 is preferably a Motorola BSC and/or MSC component. Additionally, communication between remote unit 104 and base station 106 takes place utilizing over-the-air communication signal 116.

Operation of communication system 100 in accordance with the preferred embodiment of the present invention occurs as follows: When data transmission between computer 102 and internet 114 is desired, a data transmission session is set up between server 112 and remote unit 104. In the preferred embodiment of the present invention the data transmission session is a Transmission Control Protocol/Internet Protocol (TCP/IP) session, however, in alternate embodiments of the present invention, other transmission control protocols may be utilized. As part of a negotiation between server 112 and remote unit 104, an MSS is established for data transmission. In particular the MSS is a maximum TCP packet size allowed for the negotiated session. The MSS is based on the largest frame size that a link layer protocol can handle, the processing requirements of the two end points, and on the reliability of the network. Although the MSS is fixed for the duration of the TCP/IP session, the MSS varies between sessions based on negotiations between the sender (server 112) and the receiver (computer 102), typically at the start of the session. It should be noted that the MSS is negotiated strictly between the end points and intermediate elements like BSC/MSC cannot modify it.

In the preferred embodiment of the present invention both gateway 110 and BSC/MSC 108 determine the MSS for the purpose of buffer management and vary internal buffer sizes based on the MSS. More particularly, gateway 110 and BSC/MSC 108 contain internal buffers (shown in FIG. 2) that dynamically vary in size based on the negotiated MSS. In the preferred embodiment of the present invention buffers in both gateway 110 and BSC/MSC 108 are adjusted to three times the MSS. When multiple TCP/IP sessions are conducted by a single remote unit, gateway 110 and BSC/MSC 108 adjust internal buffers to three times the largest negotiated MSS. Data transmission then takes place between server 112 and remote unit 104 utilizing the buffers.

FIG. 2 illustrates TCP/IP throughput based on buffer size for MSSs of 500, 1000, and 1500 bytes. The buffer size in x*MSS are depicted on the x axis (where x is an integer) . Thus, a 500 byte MSS with a range of 2-6 on the x-axis implies a buffer of 1 to 3 Kbytes, while for a 1500 byte MSS the range of 2-6 implies 3-9 Kbytes. As is evident the benefits of the buffering mechanism described are two fold. Firstly, buffering in accordance with the preferred embodiment reduces the total buffer size required at the BSC/MSC and gateway, and secondly, buffering in accordance with the preferred embodiment of the present invention prevents the reduction in the TCP throughput due to buffers greater or lesser than three times MSS.

FIG. 3 is a block diagram of variable-length buffer 300 in accordance with the preferred embodiment of the present invention. As discussed above, buffer 300 resides internal to gateway 110 and BSC/MSC 108, however, in alternate embodiments of the present invention, buffer 300 may reside in other network elements (e.g., routers, intermediate servers and network elements) . As is evident, buffer 300 has a data input path and a data output path, as well as an MSS input. Operation of buffer 300 in accordance with the preferred embodiment of the present invention occurs as described in FIG. 4.

The logic flow begins at step 400 where it is determined if a data transmission between remote unit 104 and server 112 needs to take place. If at step 400, it is determined that data transmission does not need to take place, the logic flow returns to step 400, otherwise the logic flow continues to step 401 where a data transmission session is set up between server 112 and remote unit 104. In the preferred embodiment of the present invention the data transmission session is a TCP/IP session, however in alternate embodiments of the preferred embodiment, the data transmission session may utilize other transmission protocols such as ISO transport protocols and any modified TCP for wireless applications. At step 403 buffer 300 determines the current MSS. As discussed above, the MSS is a negotiated maximum segment size and during file transfer, the TCP segments are usually the same length as the MSS. In response to the MSS, buffer 300 adjusts its size to three times the MSS (step 405) . At step 407 data transmission proceeds at optimum throughput utilizing the adjusted buffer. Finally at step 408 TCP/IP connection ends. The logic flow then returns to step 400 until further data transmission needs to take place.

FIG. 5 is a flow chart illustrating operation of the buffer of FIG. 3 for two TCP/IP connections in accordance with an alternate embodiment of the present invention. In the alternate embodiment of the present invention, multiple TCP/IP connections for multiple users are supported using a single buffer element. For each TCP connection, the number of packets buffered is monitored separately, and when the limit exceeds a threshold (e.g., 3*MSS) , new packets are dropped. This implementation is equivalent to maintaining a buffer with size 3*MSS for each user, yet all users share a common buffer.

The logic flow begins at step 501 where buffer 300 receives a packet for a first data-transmission session (e.g., TCP/IP session) and determines a threshold (MSS) . At step 503, buffer 300 receives a packet for a second data-transmission session (e.g., TCP/IP session) . Next, at step 505 buffer 300 determines if a number of packets buffered for the first • connection exceeds a threshold. If, at step 505, buffer 300 determines that the number of packets buffered for the first TCP/IP session exceeds the threshold, then the logic flow continues to step 507 where the packet is dropped (i.e., not buffered), and the logic flow continues to step 511. If, at step 505, buffer 300 determines that the number of packets buffered for the first TCP/IP session does not exceed the threshold, then the logic flow continues to step 509 where the packet is buffered in buffer 300. The logic flow continues to step 511. At step 511 buffer 300 determines if a number of packets buffered for the second connection exceeds the threshold. If, at step 511, buffer 300 determines that the number of packets buffered for the second TCP/IP session exceeds the threshold, then the logic flow continues to step 513 where the packet is dropped (i.e., not buffered), and the logic flow returns to step 501. If, at step 511, buffer 300 determines that the number of packets buffered for the second TCP/IP session does not exceed the threshold, then the logic flow continues to step 515 where the packet is buffered in buffer 300. The logic flow returns to step 501.

The descriptions of the invention, the specific details, and the drawings mentioned above, are not meant to limit the scope of the present invention. For example, in the preferred embodiment of the present invention the MSS is determined by monitoring the messaging that takes place during TCP/IP negotiation, however, in alternate embodiments of the present invention, the MSS may be determined in other ways. For example, the MSS could be determined at the BSC/MSC based on the PPP frame size and IP packet type (TCP or UDP) . In this situation the MSS information does not have to be signaled across the BSC/MSC and gateway. Alternatively, the gateway can determine the MSS and notify the BS/MSC. Additionally it should be noted that a buffer size may be adjusted in several ways. For example, physical memory may be allocated for storage, where the memory allocated is changed based on segment size. Alternatively, a static block of memory may be allocated for buffering, and packets may be withheld from storage if the current amount of data stored on the buffer exceeds a threshold. It is the intent of the inventors that various modifications can be made to the present invention without varying from the spirit and scope of the invention, and it is intended that all such modifications come within the scope of the following claims and their equivalents.

Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US5793762 *6 Jul 199511 Aug 1998U S West Technologies, Inc.System and method for providing packet data and voice services to mobile subscribers
US5910946 *13 Jan 19978 Jun 1999Samsung Electronics Co., Ltd.Wireless internet network architecture for voice and data communications
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
WO2002058345A2 *22 Jan 200225 Jul 2002Sharewave, Inc.Method for allocating receive buffers to accommodate retransmission scheme in wireless computer networks
WO2002058345A3 *22 Jan 200212 Feb 2004Sharewave IncMethod for allocating receive buffers to accommodate retransmission scheme in wireless computer networks
US7275093 *26 Apr 200025 Sep 20073 Com CorporationMethods and device for managing message size transmitted over a network
US8250233 *25 Jan 201121 Aug 2012Research In Motion LimitedPseudo-interactive input processing in wireless environments
Classifications
International ClassificationH04L12/861, H04L29/06, H04L12/66
Cooperative ClassificationH04L69/16, H04L69/163, H04L69/24, H04L69/166, H04L49/90, H04L49/9078, H04L49/9052, H04W28/065, H04W28/14, H04L12/66
European ClassificationH04L29/06J7, H04L29/06J13, H04L49/90, H04L49/90Q3, H04L49/90M1, H04L12/66, H04L29/06J
Legal Events
DateCodeEventDescription
9 Nov 2000AKDesignated states
Kind code of ref document: A1
Designated state(s): BR JP KR
9 Nov 2000ALDesignated countries for regional patents
Kind code of ref document: A1
Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE
3 Jan 2001121Ep: the epo has been informed by wipo that ep was designated in this application
26 Apr 2001DFPERequest for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
20 Nov 2002122Ep: pct application non-entry in european phase
22 Jan 2004NENPNon-entry into the national phase in:
Ref country code: JP