A machine-implemented method for use at a destination node for transferring data from a source node, the method comprising: generating a stream-level degree of freedom, DoF, window for a data stream; establishing one or more connections with the source node, each connection of the one or more connections being associated with one of one or more network paths between the source node and the destination node; generating one or more connection-level DoF windows for the one or more connections; sending (311, 320, 324) to the source node a request for the data stream, the request specifying at least a number of DoFs or frames to be transmitted across the one or more connections and a number of DoFs or frames to be transmitted for the data stream; receiving one or more coded frames through the data stream over the one or more connections; in response to receiving the one or more coded frames: removing one or more frames from the stream-level DoF window or from the one or more connection-level DoF windows; monitoring performance metrics for the data stream and for the one or more network paths; and based on the monitoring, sending another request to the source node to change a size of a stream-level DoF window and a size of an at least one connection-level DoF window used by source node to generate coded frames; and sending to the source node a plurality of DoF acknowledgement, ACKs, wherein the plurality of DoFs ACKs include at least one stream-level DoF ACK and at least one connection-level DoF ACK, wherein at least one of the plurality of the DoF ACKs is included within the request for the data stream. generating a stream-level degree of freedom, DoF, window for a data stream; establishing one or more connections with the source node, each connection of the one or more connections being associated with one of one or more network paths between the source node and the destination node; generating one or more connection-level DoF windows for the one or more connections; sending (311, 320, 324) to the source node a request for the data stream, the request specifying at least a number of DoFs or frames to be transmitted across the one or more connections and a number of DoFs or frames to be transmitted for the data stream; receiving one or more coded frames through the data stream over the one or more connections; in response to receiving the one or more coded frames: removing one or more frames from the stream-level DoF window or from the one or more connection-level DoF windows; monitoring performance metrics for the data stream and for the one or more network paths; and based on the monitoring, sending another request to the source node to change a size of a stream-level DoF window and a size of an at least one connection-level DoF window used by source node to generate coded frames; and removing one or more frames from the stream-level DoF window or from the one or more connection-level DoF windows; monitoring performance metrics for the data stream and for the one or more network paths; and based on the monitoring, sending another request to the source node to change a size of a stream-level DoF window and a size of an at least one connection-level DoF window used by source node to generate coded frames; and sending to the source node a plurality of DoF acknowledgement, ACKs, wherein the plurality of DoFs ACKs include at least one stream-level DoF ACK and at least one connection-level DoF ACK, wherein at least one of the plurality of the DoF ACKs is included within the request for the data stream.