An apparatus for controlling, for a transmitting node, congestion in a data communication protocol employing acknowledged communication in which the transmitting node transmits data to a receiving node and the receiving node acknowledges receipt of the data, the apparatus comprising: one or more processors; and one or more memories storing instructions which, when executed by the one or more processors, cause the one or more processor to perform the steps of: measuring a flight size indicating an amount of data sent by the transmitting node and not yet acknowledged by the receiving node; determining a transmission rate for the same time instant as the flight size; determining a trend of the flight size; determining a trend of the transmission rate, wherein the trend is derived from a transmission rate gradient calculation, in which either the determined transmission rate or the transmission rate gradient calculations or both, are filtered to reduce their temporal variability; detecting whether or not there is a congestion according to the determined trend of the transmission rate and the trend of the flight size; upon positive detection of the congestion, modifying the flight size; and transmitting data while respecting a maximum amount of unacknowledged data which the transmitting node may transmit. one or more processors; and one or more memories storing instructions which, when executed by the one or more processors, cause the one or more processor to perform the steps of: measuring a flight size indicating an amount of data sent by the transmitting node and not yet acknowledged by the receiving node; determining a transmission rate for the same time instant as the flight size; determining a trend of the flight size; determining a trend of the transmission rate, wherein the trend is derived from a transmission rate gradient calculation, in which either the determined transmission rate or the transmission rate gradient calculations or both, are filtered to reduce their temporal variability; detecting whether or not there is a congestion according to the determined trend of the transmission rate and the trend of the flight size; upon positive detection of the congestion, modifying the flight size; and transmitting data while respecting a maximum amount of unacknowledged data which the transmitting node may transmit. measuring a flight size indicating an amount of data sent by the transmitting node and not yet acknowledged by the receiving node; determining a transmission rate for the same time instant as the flight size; determining a trend of the flight size; determining a trend of the transmission rate, wherein the trend is derived from a transmission rate gradient calculation, in which either the determined transmission rate or the transmission rate gradient calculations or both, are filtered to reduce their temporal variability; detecting whether or not there is a congestion according to the determined trend of the transmission rate and the trend of the flight size; upon positive detection of the congestion, modifying the flight size; and transmitting data while respecting a maximum amount of unacknowledged data which the transmitting node may transmit.