A method of routing a data packet through a router in a system transmitting data packets between a source and a destination over a network including the router, the method comprising: receiving the data packet; dividing the data packet into a cells of a fixed size; storing the cells in a distributed memory, the distributed memory including two or more memory banks where consecutive cells from the