Data is frequently transmitted to and from users, such as consumers, over a network such as the Internet, cable, fiber, wireless, or satellite networks. A data modem is frequently used to modulate and demodulate data for transmission over the network. Data modems normally include one or more packet buffers to store incoming and outgoing packets, which may be transmitted using protocols such as UDP (User Datagram Protocol), which generally provides real-time non-guaranteed delivery of packets, and TCP/IP (Transmission Control Protocol/Internet Protocol), which generally guarantees delivery of packets. Upstream packets such as UDP packets containing voice data or TCP/IP packets containing uploaded pictures or videos are generally stored in the packet buffer until they can be accepted by the network.
The ability of a given network to accept packets from the packet buffer may depend on a service “tier” to which a given consumer or other user has access. Users who have access to higher levels of service may be provided with a higher bandwidth corresponding to an improved performance experience, whereas users who have access to lower levels of service may be provided with a lower bandwidth. These factors may affect the length of time that packets remain in the packet buffer. If the network is congested, packets may remain in the buffer for a longer period of time, leading to perceptible delays, especially for applications such as voice transmission.
When a data modem is “provisioned” for a particular user or class of users, one of the parameters that may be set is the size of the packet buffer. By setting the packet buffer to a large size, some packets may stay in the buffer for a long period of time, creating perceptible delays. By setting the packet buffer to a small size, the buffer may fill up quickly, leading to an underutilization of the provisioned data rate. A default packet buffer size may be provided, which may be based on an assumption that the provisioned user will have a high tier of service corresponding to high bandwidth. Once the packet buffer size is set, it is generally not changed for the user. It would be desirable to allow more flexibility by allowing the buffer size to be adapted over time based on one or more factors.