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 cells of a fixed size; while dividing the data packet, pre-processing layer header data for the packet to locate the beginning of a next layer header; storing