System for packet-based scheduling for Transmission Control Protocol, TCP, sessions or User Datagram Protocol, UDP, sessions, wherein the system comprises: a first bonding module comprising a first scheduling module and at least two access interfaces connected to at least one transport network, wherein the first bonding module can be connected to a user device, wherein a TCP tunnel is configured via each of the access interfaces which terminates at a second bonding module, and wherein the first scheduling module is configured to schedule and distribute data packets via the TCP tunnels towards the second bonding module, preferably over the internet; and/or the second bonding module comprising a second scheduling module and at least one access interface connected to each of the at least one transport network, wherein the second bonding module can be connected to a server, and wherein the second scheduling module is configured to schedule and distribute data packets via the TCP tunnels towards the first bonding module, wherein the first and/or second scheduling module is configured to obtain the capacity of the TCP tunnels between a first router and a second router based on native information from the TCP tunnels, and use said capacity to decide about the scheduling weight for each of the TCP tunnels, and wherein the native information of the TCP tunnels comprises at least one of the size of the Congestion Window C cwnd, a TCP slowstart threshold S thresh, a smoothed Round Trip Time T RTT, a number of packets that have been send out P out, a number of packets that have been acknowledged P sacked, a number of packets that have been re-transmitted P retrans, and a number of packets considered to be lost P lost. a first bonding module comprising a first scheduling module and at least two access interfaces connected to at least one transport network, wherein the first bonding module can be connected to a user device, wherein a TCP tunnel is configured via each of the access interfaces which terminates at a second bonding module, and wherein the first scheduling module is configured to schedule and distribute data packets via the TCP tunnels towards the second bonding module, preferably over the internet; and/or the second bonding module comprising a second scheduling module and at least one access interface connected to each of the at least one transport network, wherein the second bonding module can be connected to a server, and wherein the second scheduling module is configured to schedule and distribute data packets via the TCP tunnels towards the first bonding module, wherein the first and/or second scheduling module is configured to obtain the capacity of the TCP tunnels between a first router and a second router based on native information from the TCP tunnels, and use said capacity to decide about the scheduling weight for each of the TCP tunnels, and wherein the native information of the TCP tunnels comprises at least one of the size of the Congestion Window C cwnd, a TCP slowstart threshold S thresh, a smoothed Round Trip Time T RTT, a number of packets that have been send out P out, a number of packets that have been acknowledged P sacked, a number of packets that have been re-transmitted P retrans, and a number of packets considered to be lost P lost.