My brief summary of this section:
The straight forward way of flow control is to receive messages in full, then forward the message (store-and-forward). The drawback is the latency and pre-occupied buffer space.
Cut-through flow control pre-allocates resources on next link and sends the message when receiving the routing information in the head part of the message, but the message can be received in full when there's the link is blocked somewhere. This can be a problem because of it taking up the buffer.
Wormhole flow control sends messages in slits, and will only move slit when the head (previous slit) moves, and only follows one step. It solves the previous issue.
Virtual channel is to multiplex the queue, so it won't block in the previous case.