A device for data transmission, the device comprising: a processing unit; a memory coupled to the processing unit; and a network interface card, NIC,, the NIC being configured to perform actions, the actions comprising: generating a plurality of packets based on a remote direct memory access, RDMA, message to be transmitted from the device to a NIC of another device, the device having an RDMA connection with the other device via a plurality of paths, each packet of the plurality of packets including at least a plurality of fields, the plurality of fields including information for transmitting said each packet over a respective path of the plurality of paths; transmitting each packet of the plurality of packets to the NIC of the other device over the respective path of the plurality of paths via an RDMA protocol; and performing congestion control based on congestion control information for the plurality of paths, the congestion control information being a congestion control window for the plurality of paths, wherein said performing comprises: in response to receiving an acknowledgement from the NIC of the other device, updating the congestion control window based on the acknowledgement; determining an available window based on the updated congestion control window, the available window indicating a number of packets allowed to be transmitted to the NIC of the other device; and if the determined available window is greater than zero, sending another packet of the plurality of packets over one path of the plurality of paths, wherein said one path is a path where the acknowledgement is received. a processing unit; a memory coupled to the processing unit; and a network interface card, NIC,, the NIC being configured to perform actions, the actions comprising: generating a plurality of packets based on a remote direct memory access, RDMA, message to be transmitted from the device to a NIC of another device, the device having an RDMA connection with the other device via a plurality of paths, each packet of the plurality of packets including at least a plurality of fields, the plurality of fields including information for transmitting said each packet over a respective path of the plurality of paths; transmitting each packet of the plurality of packets to the NIC of the other device over the respective path of the plurality of paths via an RDMA protocol; and performing congestion control based on congestion control information for the plurality of paths, the congestion control information being a congestion control window for the plurality of paths, wherein said performing comprises: in response to receiving an acknowledgement from the NIC of the other device, updating the congestion control window based on the acknowledgement; determining an available window based on the updated congestion control window, the available window indicating a number of packets allowed to be transmitted to the NIC of the other device; and if the determined available window is greater than zero, sending another packet of the plurality of packets over one path of the plurality of paths, wherein said one path is a path where the acknowledgement is received. generating a plurality of packets based on a remote direct memory access, RDMA, message to be transmitted from the device to a NIC of another device, the device having an RDMA connection with the other device via a plurality of paths, each packet of the plurality of packets including at least a plurality of fields, the plurality of fields including information for transmitting said each packet over a respective path of the plurality of paths; transmitting each packet of the plurality of packets to the NIC of the other device over the respective path of the plurality of paths via an RDMA protocol; and performing congestion control based on congestion control information for the plurality of paths, the congestion control information being a congestion control window for the plurality of paths, wherein said performing comprises: in response to receiving an acknowledgement from the NIC of the other device, updating the congestion control window based on the acknowledgement; determining an available window based on the updated congestion control window, the available window indicating a number of packets allowed to be transmitted to the NIC of the other device; and if the determined available window is greater than zero, sending another packet of the plurality of packets over one path of the plurality of paths, wherein said one path is a path where the acknowledgement is received. in response to receiving an acknowledgement from the NIC of the other device, updating the congestion control window based on the acknowledgement; determining an available window based on the updated congestion control window, the available window indicating a number of packets allowed to be transmitted to the NIC of the other device; and if the determined available window is greater than zero, sending another packet of the plurality of packets over one path of the plurality of paths, wherein said one path is a path where the acknowledgement is received.