A method of operating a crossbar data switch comprising a plurality of ingress ports and a plurality of egress ports, the method comprising: receiving, at an ingress port of the plurality of ingress ports, an assigned window size indicating a number of bytes of one or more Internet Protocol, IP, data packets that may be sent to an egress port of the plurality of egress ports without waiting for an acknowledgement message to be received; sending one or more IP data packets, up to the number of bytes, from the ingress port to the egress port without first receiving any acknowledgement message from the egress port, by: sending one of the one or more IP data packets; incrementing a window size counter according to a size of the sent IP data packet; comparing, via a controller, the window size counter to the assigned window size for the egress port; and if the window size counter exceeds the assigned window size for the egress port, ceasing transmission of subsequent IP data packets of the one or more data packets and waiting for an acknowledgment message indicating that the egress port has received one or more of the IP data packets, or, if the window size counter does not exceed the assigned window size for the egress port, repeating the steps of sending one of the one or more IP data packets, incrementing the window size and comparing the window size to the assigned window size; receiving an acknowledgment message including an acknowledged packet size from the egress port; decrementing the window size according to the acknowledged packet size; and repeating the steps of sending one of the one or more IP data packets, incrementing the window size and comparing the window size to the assigned window size, wherein the one or more IP data packets is sent to the egress port without first generating a request to send the IP data packet or receiving permission from the egress port, and wherein the assigned window size is determined based on an amount of data at the ingress port waiting to be transmitted to the egress port and a maximum window size calculated based on a bandwidth and a round trip time from the ingress port to the egress port. receiving, at an ingress port of the plurality of ingress ports, an assigned window size indicating a number of bytes of one or more Internet Protocol, IP, data packets that may be sent to an egress port of the plurality of egress ports without waiting for an acknowledgement message to be received; sending one or more IP data packets, up to the number of bytes, from the ingress port to the egress port without first receiving any acknowledgement message from the egress port, by: sending one of the one or more IP data packets; incrementing a window size counter according to a size of the sent IP data packet; comparing, via a controller, the window size counter to the assigned window size for the egress port; and if the window size counter exceeds the assigned window size for the egress port, ceasing transmission of subsequent IP data packets of the one or more data packets and waiting for an acknowledgment message indicating that the egress port has received one or more of the IP data packets, or, if the window size counter does not exceed the assigned window size for the egress port, repeating the steps of sending one of the one or more IP data packets, incrementing the window size and comparing the window size to the assigned window size; sending one of the one or more IP data packets; incrementing a window size counter according to a size of the sent IP data packet; comparing, via a controller, the window size counter to the assigned window size for the egress port; and if the window size counter exceeds the assigned window size for the egress port, ceasing transmission of subsequent IP data packets of the one or more data packets and waiting for an acknowledgment message indicating that the egress port has received one or more of the IP data packets, or, if the window size counter does not exceed the assigned window size for the egress port, repeating the steps of sending one of the one or more IP data packets, incrementing the window size and comparing the window size to the assigned window size; receiving an acknowledgment message including an acknowledged packet size from the egress port; decrementing the window size according to the acknowledged packet size; and repeating the steps of sending one of the one or more IP data packets, incrementing the window size and comparing the window size to the assigned window size, wherein the one or more IP data packets is sent to the egress port without first generating a request to send the IP data packet or receiving permission from the egress port, and wherein the assigned window size is determined based on an amount of data at the ingress port waiting to be transmitted to the egress port and a maximum window size calculated based on a bandwidth and a round trip time from the ingress port to the egress port.