A scale-out router device (100, 200) comprising: a memory storage configured to store a database with a path table and a usage table, wherein each row in the path table includes a source identifier, a destination identifier, and a path; a plurality of switches (120, 130), wherein each switch of the plurality of switches comprises a programmable data plane chip; and a plurality of network interface line cards configured to: receive data through a network interface of a first line card addressed to a second line card; retrieve, by the first line card, paths in all entries in the path table having a source field that matches the first line card and a destination field that matches the second line card; identify, by the first line card, a set of all switches used in all paths of the plurality of paths and retrieve congestion data for each switch in the set of switches retrieved from the usage table; use the retrieved congestion data to determine, from the plurality of paths, a path through at least a first switch of the plurality of switches from the first line card to the second line card; and forward the data, the address of the second line card, and path information for the determined path to the second line card from the first line card through the at least a first switch; wherein the scale-out router is configured such that a data packet format is used in the scale-out router, wherein the data packet includes tags (320A-320D) and a path status / queuing parameter, wherein the tags (320A-320D) indicate the path through the switches in the router, and the path status / queuing parameter indicates the current status of the data packet in following the path. a memory storage configured to store a database with a path table and a usage table, wherein each row in the path table includes a source identifier, a destination identifier, and a path; a plurality of switches (120, 130), wherein each switch of the plurality of switches comprises a programmable data plane chip; and a plurality of network interface line cards configured to: receive data through a network interface of a first line card addressed to a second line card; retrieve, by the first line card, paths in all entries in the path table having a source field that matches the first line card and a destination field that matches the second line card; identify, by the first line card, a set of all switches used in all paths of the plurality of paths and retrieve congestion data for each switch in the set of switches retrieved from the usage table; use the retrieved congestion data to determine, from the plurality of paths, a path through at least a first switch of the plurality of switches from the first line card to the second line card; and forward the data, the address of the second line card, and path information for the determined path to the second line card from the first line card through the at least a first switch; wherein the scale-out router is configured such that a data packet format is used in the scale-out router, wherein the data packet includes tags (320A-320D) and a path status / queuing parameter, wherein the tags (320A-320D) indicate the path through the switches in the router, and the path status / queuing parameter indicates the current status of the data packet in following the path. receive data through a network interface of a first line card addressed to a second line card; retrieve, by the first line card, paths in all entries in the path table having a source field that matches the first line card and a destination field that matches the second line card; identify, by the first line card, a set of all switches used in all paths of the plurality of paths and retrieve congestion data for each switch in the set of switches retrieved from the usage table; use the retrieved congestion data to determine, from the plurality of paths, a path through at least a first switch of the plurality of switches from the first line card to the second line card; and forward the data, the address of the second line card, and path information for the determined path to the second line card from the first line card through the at least a first switch; wherein the scale-out router is configured such that a data packet format is used in the scale-out router, wherein the data packet includes tags (320A-320D) and a path status / queuing parameter, wherein the tags (320A-320D) indicate the path through the switches in the router, and the path status / queuing parameter indicates the current status of the data packet in following the path.