Patent Description:
The explosive growth of network traffic generated by smartphones, tablet computers, and video streaming on the internet poses unique challenges for network congestion control. When network buffers are full or nearly full, incoming packets may be dropped. In order to avoid dropping packets, the conventional customer-premises equipment (CPE) provides as many buffers as possible. However, the buffers used to avoid packet loss may lead to highly increasing the packet's waiting time in the queue and the variation of the waiting time, thereby causing the issue of bufferbloat. Bufferbloat occurs when there are too many packets queued for transmission in the buffers of a network, and it results in high latency and latency variation. As more and more interactive applications (for example, voice over internet protocol, live video streaming, financial transactions, etc.) run over <NUM>/<NUM> mobile networks, high latency and latency variation can degrade the performance of the applications.

<FIG> is a schematic diagram of an uplink customer-premises equipment (CPE) processing a packet. A customer-premises equipment <NUM> includes a router/gateway <NUM> and a modem <NUM>. In the conventional customer-premises equipment <NUM>, the router/gateway <NUM> receives a packet Pkt from a local area network LAN. The router/gateway <NUM> forwards the packet Pkt to the modem <NUM> for processing via a communication interface. The modem <NUM> then transmits the processed packet Pkt to a wide area network WAN.

However, when the uplink bandwidth is constantly changing, since the customer-premises equipment <NUM> cannot know in advance the bandwidth to be allocated in the future, it is difficult to arrange the transmission scheduling and the transmission rate of uplink packets in advance. When the customer-premises equipment <NUM> is subjected to a burst of input packets from the local area network LAN, since the transmission scheduling and the transmission rate of the uplink packets cannot be adjusted, a bufferbloat may occur in the customer-premises equipment <NUM>. Bufferbloat increases the latency of uplink high-priority packets (for example, DHCP ACK packets), and then reduces the throughput of downlink packets (for example, TCP packets), and that affects the service quality of the network. Therefore, there is an urgent need to design a technical solution for the conventional customer-premises equipment <NUM> to control high latency and latency variation, thereby providing a user with an ideal service quality.

<CIT> relates to a transmission burst control in a network device. <CIT> relates to a packet router for a data packet transmission network.

The following disclosure serves a better understanding of the present invention. The disclosure provides an uplink latency control method and a customer-premises equipment, which can effectively reduce uplink latency, as disclosed by the appended claims.

Based on the above, with the uplink latency control method and the customer-premises equipment provided by the embodiments of the disclosure, the embodiments of the disclosure can instantly and adaptively adjust the packet transmission discipline of the queuing discipline manager according to the congestion condition of the network, and control the packet transmission between the queuing discipline manager and the network driver. The embodiments of the disclosure can solve the issue of bufferbloat occurred in the customer-premises equipment to effectively reduce uplink latency and improve the service quality of the customer-premises equipment.

Reference will now be made in detail to the exemplary embodiments of the disclosure, and examples of the exemplary embodiments are illustrated in the drawings. Wherever possible, the same reference signs are used in the drawings and description to refer to the same or similar parts.

<FIG> is a schematic diagram of a customer-premises equipment according to an embodiment of the disclosure. As shown in <FIG>, a customer-premises equipment <NUM> includes a router/gateway <NUM> and a modem <NUM>. The router/gateway <NUM> includes a queuing discipline manager <NUM>, a network driver <NUM>, a hardware controller <NUM>, and an uplink latency controller <NUM>. The queuing discipline manager <NUM> includes a queuing buffer <NUM>. The network driver <NUM> includes a packet buffer <NUM>. The uplink latency controller <NUM> is coupled to the queuing discipline manager <NUM> and the network driver <NUM>.

The customer-premises equipment <NUM> is a network terminal equipment located at the user end that interfaces with a telecommunication operator, such as a terminal equipment for accessing telephone or mobile network services. The customer-premises equipment <NUM> may be a local area network terminal equipment such as a telephone, a cable television set-top box and digital subscriber line (DSL) router, a server, a host, a wireless router, a switch, a firewall, and a Wi-Fi router, or may be a wide area network terminal equipment installed by a network service provider. During a process of uplink packet transmission, the customer-premises equipment <NUM> transmits a packet Pkt from a local area network LAN to a wide area network WAN.

In the embodiment of the disclosure, after the router/gateway <NUM> receives the packet Pkt from the local area network LAN, the packet Pkt may be stored in a buffer to wait for transmission processing. Specifically, the packet Pkt may be stored in the queuing buffer <NUM> of the queuing discipline manager <NUM>. The queuing discipline manager <NUM> may transmit the packet Pkt stored in the queuing buffer <NUM> to the packet buffer <NUM> of the network driver <NUM> to wait for transmission processing. The network driver <NUM> transmits the packet Pkt stored in the packet buffer <NUM> to the hardware controller <NUM>. Next, after the hardware controller <NUM> transmits the packet Pkt to the modem <NUM> for processing through a communication interface, the modem <NUM> transmits the processed packet Pkt to the wide area network WAN. The communication interface between the hardware controller <NUM> and the modem <NUM> may include a universal serial bus (USB) interface, an Ethernet network interface, a peripheral component interconnect express (PCI-E) interface, and/or other wired communication interfaces.

It should be noted that when a burst of packets Pkt from the local area network LAN causes uplink bandwidth overload, the issue of bufferbloat may occur in the queuing buffer <NUM> or the packet buffer <NUM>. In the disclosure, the uplink latency controller <NUM> detects a congestion condition of the packet buffer <NUM> of the network driver <NUM>. Also, the uplink latency controller <NUM> adjusts a packet transmission discipline of the queuing discipline manager <NUM>, and controls a packet transmission between the queuing discipline manager <NUM> and the network driver <NUM>. Thereby, the uplink latency can be effectively reduced, and the service quality of the customer-premises equipment <NUM> can be improved. In other words, the customer-premises equipment <NUM> may be configured to execute an uplink latency control method shown in <FIG>, <FIG>, and/or <FIG> below to solve the issue of bufferbloat.

<FIG> is a flowchart of an uplink latency control method according to a first embodiment of the disclosure. The uplink latency control method shown in <FIG> is applicable to the customer-premises equipment <NUM> shown in <FIG>. In Step S301, the uplink latency controller <NUM> detects the congestion condition of the packet buffer <NUM> of the network driver <NUM>. In Step S303, the uplink latency controller <NUM> adjusts the packet transmission discipline of the queuing discipline manager <NUM> according to the congestion condition of the packet buffer <NUM>, and controls the packet transmission between the queuing discipline manager <NUM> and the network driver <NUM>. When the number of packets Pkt from the local area network LAN causes the uplink bandwidth to be overloaded, the uplink latency controller <NUM> may dynamically control the packet transmission between the queuing discipline manager <NUM> and the network driver <NUM> according to the congestion condition of the packet buffer <NUM> to solve the issue of bufferbloat occurred in the queuing buffer <NUM> or the packet buffer <NUM>.

<FIG> is a flowchart of an uplink latency control method according to a second embodiment of the disclosure. The uplink latency control method shown in <FIG> is applicable to the customer-premises equipment <NUM> shown in <FIG>.

In Step S401, the uplink latency controller <NUM> estimates a packet queuing delay of the packet buffer <NUM>. Specifically, the uplink latency controller <NUM> detects the congestion condition of the packet buffer <NUM> of the network driver <NUM> by estimating the packet queuing delay of the packet buffer <NUM>. For example, the packet queuing delay of the packet buffer <NUM> may be an average delay time of multiple uplink packets from entering the packet buffer <NUM> to leaving the packet buffer <NUM> (for example, being transmitted to the hardware controller <NUM>). A longer packet queuing delay of the packet buffer <NUM> may represent a more serious congestion condition of the packet buffer <NUM>. A first threshold is used to determine whether congestion occurs in the packet buffer <NUM>. In Step S403, the uplink latency controller <NUM> determines whether the packet queuing delay of the packet buffer <NUM> is greater than the first threshold.

In Step S403, when it is determined that the packet queuing delay of the packet buffer <NUM> is "not" greater than the first threshold, which means that no congestion occurs in the packet buffer <NUM>, the uplink latency controller <NUM> then executes Step S405 and/or Step S4051. In Step S405, the uplink latency controller <NUM> allows the queuing discipline manager <NUM> to transmit packets to the network driver <NUM>. In Step S4051, the uplink latency controller <NUM> adjusts the parameter of the queuing discipline manager <NUM> to a predetermined value. In some embodiments of the disclosure, the uplink latency controller <NUM> may only execute Step S405 without executing Step S4051. Persons skilled in the art can execute Step S405 and/or Step S4051 in an appropriate order or combination according to different design requirements.

In Step S403, when it is determined that the packet queuing delay of the packet buffer <NUM> is greater than the first threshold, the uplink latency controller <NUM> then executes Step S407, and the uplink latency controller <NUM> determines whether the packet queuing delay of the packet buffer <NUM> is greater than a second threshold in Step S407. The second threshold is greater than the first threshold. The second threshold is used to determine the severity level of congestion when congestion occurs in the packet buffer <NUM>. The uplink latency controller <NUM> then adjusts and controls the queuing discipline manager <NUM> and the network driver <NUM> differently according to the severity level of congestion.

In Step S407, when it is determined that the packet queuing delay of the packet buffer <NUM> is "not" greater than the second threshold, which means that the packet buffer <NUM> is slightly congested, the uplink latency controller <NUM> then executes Step S408 and/or S4081. In Step S408, the uplink latency controller <NUM> stops the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. Specifically, the uplink latency controller <NUM> may configure a receiving interface state of the network driver <NUM> to be "disabled", which is equivalent to turning off the function of the network driver <NUM> to receive the packet Pkt, thereby stopping the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. Alternatively, the uplink latency controller <NUM> may instruct the queuing discipline manager <NUM> not to transmit the packet Pkt to the network driver <NUM> to stop the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. In Step S4081, the uplink latency controller <NUM> correspondingly adjusts the parameter of the queuing discipline manager <NUM>. In some embodiments of the disclosure, the uplink latency controller <NUM> may only execute Step S408 without executing Step S4081. Persons skilled in the art can execute Step S408 and/or Step S4081 in an appropriate order or combination according to different design requirements.

In Step S407, when it is determined that the packet queuing delay of the packet buffer <NUM> is greater than the second threshold, which means that the packet buffer <NUM> is severely congested, the uplink latency controller <NUM> then executes Step S409 and/or S4091. In Step S409, the uplink latency controller <NUM> instructs the network driver <NUM> to drop every packet in the packet buffer <NUM>, and stop the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. In Step S4091, the uplink latency controller <NUM> correspondingly adjusts the parameter of the queuing discipline manager <NUM>. In some embodiments of the disclosure, the uplink latency controller <NUM> may only execute Step S409 without executing Step S4091. Persons skilled in the art can execute Step S409 and/or Step S4091 in an appropriate order or combination according to different design requirements.

<FIG> is a flowchart of an uplink latency control method according to a third embodiment of the disclosure. The uplink latency control method shown in <FIG> is applicable to the customer-premises equipment <NUM> shown in <FIG>.

In Step S501, the uplink latency controller <NUM> estimates the packet queuing delay of the packet buffer <NUM>. In Step S503, the uplink latency controller <NUM> determines whether the packet queuing delay of the packet buffer <NUM> is greater than the first threshold.

In Step S503, when it is determined that the packet queuing delay of the packet buffer <NUM> is "not" greater than the first threshold, which means that no congestion occurs in the packet buffer <NUM>, the uplink latency controller <NUM> then executes Step S505 and/or S5051. In Step S505, the uplink latency controller <NUM> allows the queuing discipline manager <NUM> to transmit packets to the network driver <NUM>. In Step S5051, the uplink latency controller <NUM> adjusts the parameter of the queuing discipline manager <NUM> to the predetermined value.

In Step S503, when it is determined that the packet queuing delay of the packet buffer <NUM> is "not" greater than the first threshold, which means that congestion occurs in the packet buffer <NUM>, the uplink latency controller <NUM> then executes Steps S507, S508, and/or S509. In Step S507, the uplink latency controller <NUM> instructs the network driver <NUM> to drop every packet in the packet buffer <NUM>. In Step S508, the uplink latency controller <NUM> stops the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. Specifically, the uplink latency controller <NUM> may configure the receiving interface state of the network driver <NUM> to be "disabled", which is equivalent to turning off the function of the network driver <NUM> to receive the packet Pkt, thereby stopping the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. Alternatively, the uplink latency controller <NUM> may instruct the queuing discipline manager <NUM> not to transmit the packet Pkt to the network driver <NUM> to stop the packet transmission from the queuing discipline manager <NUM> to the network driver <NUM>. In Step S509, the uplink latency controller <NUM> correspondingly adjusts the parameter of the queuing discipline manager <NUM>.

It should be noted that in the embodiment of the disclosure, the execution order of Step S505 and Step S5051 is not limited. In some embodiments of the disclosure, the uplink latency controller <NUM> may first execute Step S5051, and then execute Step S505. In some embodiments of the disclosure, the uplink latency controller <NUM> may only execute Step S505 without executing Step S5051. Persons skilled in the art can execute Step S505 and/or Step S5051 in an appropriate order or combination according to different design requirements. Likewise, in some embodiments of the disclosure, the execution order of Steps S507, S508, and/or S509 is not limited. Persons skilled in the art can execute Steps S507, S508, and/or S509 according to an appropriate order. In some embodiments of the disclosure, the uplink latency controller <NUM> may only execute Steps S507 and S508 without executing Step S509.

In some embodiments of the disclosure, the parameter of the queuing discipline manager <NUM> includes at least one of a target queuing delay, a latency measurement interval, and a queuing buffer length of the queuing discipline manager <NUM>. The uplink latency controller <NUM> may correspondingly adjust the parameter of the queuing discipline manager <NUM> according to the detected congestion level of the packet buffer <NUM>. The target queuing delay is a target value of the allowable queuing delay of the queuing buffer <NUM> of the queuing discipline manager <NUM>, and is, for example, configured to be <NUM> milliseconds in an uncongested state and configured to be a higher value such as <NUM> milliseconds in a congested state. The latency measurement interval is the time interval that the queuing discipline manager <NUM> measures the queuing latency of the queuing buffer <NUM>. For example, in the uncongested state, the latency measurement interval is configured to be <NUM>-<NUM> milliseconds so that the queuing discipline manager <NUM> measures the queuing latency of the queuing buffer <NUM> once every <NUM>-<NUM> milliseconds, and in the congested state, the latency measurement interval is configured to be a shorter value such as <NUM>-<NUM> milliseconds so that the queuing discipline manager <NUM> measures the queuing latency of the queuing buffer <NUM> once every <NUM>-<NUM> milliseconds. The queuing buffer length is the length of the queuing buffer <NUM> of the queuing discipline manager <NUM>, which affects the number of packets that can be stored in the queuing discipline manager <NUM>, and is, for example, configured to be a greater length in the uncongested state and configured to be a smaller length in the congested state. In some embodiments of the disclosure, the parameter of the queuing discipline manager <NUM> includes the parameter of the FlowQueue CoDel (FQ-CoDel) algorithm.

In some embodiments of the disclosure, the modem <NUM> provides a signal modulation or signal demodulation function for accessing different network types or corresponding to different network protocols, so that the customer-premises equipment <NUM> may be connected to the wide area network WAN, and perform data transmission and communication with the wide area network WAN. The network of the modem <NUM> may be implemented by a communication chip. The communication chip may support a wireless or wired communication network, such as a wired internet, an ultra wideband (UWB) network, a global system for mobile communication (GSM), a personal handy-phone system (PHS), a code division multiple access (CDMA) system, a wideband code division multiple access (WCDMA) system, a long term evolution (LTE) system, a worldwide interoperability for microwave access (WiMAX) system, and a wireless fidelity (Wi-Fi) system. The modem <NUM> may be an element supporting signal transmission of, for example, an Ethernet network, a third generation communication (<NUM>) network, a fourth generation communication (<NUM>) network, a fifth generation communication (<NUM>) network, or a sixth generation communication (<NUM>) network.

In some embodiments of the disclosure, the network driver <NUM> is one of a universal serial bus (USB) network driver, an Ethernet network driver, and a peripheral component interconnect express (PCI-E) network driver.

In some embodiments of the disclosure, the queuing buffer <NUM> or the packet buffer <NUM> may be, for example, any form of fixed or removable random access memory (RAM), readonly memory (ROM), flash memory, hard disk, other similar devices, or a combination of these devices, and is used to store the buffered packet Pkt.

In some embodiments of the disclosure, according to different design requirements, the block implementation manner of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> included in the router/gateway <NUM> may be in the form of hardware, firmware, software (that is, program), or a combination of multiple of the three.

In terms of the form of hardware, in some embodiments of the disclosure, the block of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> may be implemented in a logic circuit of an integrated circuit. The related block function of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> may be implemented as hardware using hardware description languages (for example, Verilog HDL or VHDL) or other suitable programming languages. For example, the related block function of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> may be implemented in one or more controllers, microcontrollers, microprocessors, application-specific integrated circuits (ASICs), digital signal processors (DSPs), field programmable gate arrays (FPGAs), and/or various logic blocks, modules, and circuits in the other processing units.

In terms of the form of software and/or the form of firmware, in some embodiments of the disclosure, the related block function of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> may be implemented as programming codes. For example, the block of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM> may be implemented using general programming languages (for example, C, C++, or assembly languages) or other suitable programming languages. The programming code may be recorded/stored in a recording medium. In some embodiments, the recording medium includes, for example, a readonly memory (ROM), a storage device and/or random access memory (RAM), a flash memory, a hard disk, other similar device, or a combination of the devices. In other embodiments, the recording medium may include a non-transitory computer readable medium. For example, the non-transitory computer readable medium may be implemented using a tape, a disk, a card, a semiconductor memory, a programmable logic circuit. A computer, a central processing unit (CPU), a controller, a microcontroller, or a microprocessor may read and execute the programming code from the recording medium, thereby implementing the related block function of the queuing discipline manager <NUM>, the network driver <NUM>, the hardware controller <NUM>, or the uplink latency controller <NUM>.

In summary, the uplink latency control method and the customer-premises equipment provided by the embodiments of the disclosure can instantly and adaptively adjust the packet transmission discipline of the queuing discipline manager according to the congestion condition of the network, and control the packet transmission between the queuing discipline manager and the network driver. Thereby, the embodiments of the disclosure can solve the issue of bufferbloat occurred in the customer-premises equipment to effectively reduce uplink latency and improve the service quality of the customer-premises equipment.

Claim 1:
An uplink latency control method, comprising:
detecting, through an uplink latency controller (<NUM>) of a customer premises equipment (<NUM>, <NUM>), a congestion condition of a packet buffer (<NUM>) of a network driver (<NUM>); and
according to the congestion condition, adjusting, through the uplink latency controller (<NUM>) of the customer premises equipment (<NUM>, <NUM>), a packet transmission discipline of a queuing discipline manager (<NUM>), and controlling, through the uplink latency controller (<NUM>) of the customer premises equipment (<NUM>, <NUM>), a packet transmission between the queuing discipline manager (<NUM>) and the network driver (<NUM>),
wherein the step of detecting the congestion condition of the packet buffer (<NUM>) of the network driver (<NUM>) further comprises:
estimating a packet queuing delay of the packet buffer (<NUM>),
wherein the step of controlling the packet transmission between the queuing discipline manager (<NUM>) and the network driver (<NUM>) further comprises:
in response to the packet queuing delay of the packet buffer (<NUM>) being greater than a first threshold, stopping the packet transmission from the queuing discipline manager (<NUM>) to the network driver (<NUM>); and
in response to the packet queuing delay of the packet buffer (<NUM>) being greater than a second threshold, instructing the network driver (<NUM>) to drop every packet in the packet buffer (<NUM>), wherein the second threshold is greater than the first threshold.