A computer implemented method for controlling congestion on a network, comprising: receiving, by a receiver (104, 106, 106, 604), at least one packet sent by a sender, wherein the at least one packet is marked with a marker indicating "Congestion Experienced" when congestion between the sender and the receiver is detected or the at least one packet is not marked with the marker indicating "Congestion Experienced" when no congestion is detected between the sender and the receiver; on receiving the at least one packet at the receiver, the method comprises: i) determining by the receiver (104, 106, 108, 604), based on the packet not being marked with the marker, that there is no congestion between a sender and the receiver and responsive to determining that there is no congestion, assuming by the receiver that a highest data rate is used by the sender between the sender and the receiver; ii) determining by the receiver, based on the packet being marked with the marker, that there is congestion between the sender and the receiver and responsive to determining that there is congestion, determining that a rate adaptation is required; and setting the rate adaptation by determining a lower data rate, the rate adaptation being set based upon a rate adaptation sequence; and sending by the receiver to the sender a data rate change request including the lower data rate. receiving, by a receiver (104, 106, 106, 604), at least one packet sent by a sender, wherein the at least one packet is marked with a marker indicating "Congestion Experienced" when congestion between the sender and the receiver is detected or the at least one packet is not marked with the marker indicating "Congestion Experienced" when no congestion is detected between the sender and the receiver; on receiving the at least one packet at the receiver, the method comprises: i) determining by the receiver (104, 106, 108, 604), based on the packet not being marked with the marker, that there is no congestion between a sender and the receiver and responsive to determining that there is no congestion, assuming by the receiver that a highest data rate is used by the sender between the sender and the receiver; ii) determining by the receiver, based on the packet being marked with the marker, that there is congestion between the sender and the receiver and responsive to determining that there is congestion, determining that a rate adaptation is required; and setting the rate adaptation by determining a lower data rate, the rate adaptation being set based upon a rate adaptation sequence; and sending by the receiver to the sender a data rate change request including the lower data rate. i) determining by the receiver (104, 106, 108, 604), based on the packet not being marked with the marker, that there is no congestion between a sender and the receiver and responsive to determining that there is no congestion, assuming by the receiver that a highest data rate is used by the sender between the sender and the receiver; ii) determining by the receiver, based on the packet being marked with the marker, that there is congestion between the sender and the receiver and responsive to determining that there is congestion, determining that a rate adaptation is required; and setting the rate adaptation by determining a lower data rate, the rate adaptation being set based upon a rate adaptation sequence; and sending by the receiver to the sender a data rate change request including the lower data rate.