A router is a network device that forwards data packets between different networks. Traditionally routers were dedicated hardware devices, but can now be defined via software on generic hardware as part of SDN and NFV based network stacks. Load Balancers can also route traffic between different networks and other entities on networks. Routers have connections to two or more data networks so that they can receive and route packets between the networks. Routers communicate with each other and build up dynamic routing tables that they use to work out the best way to send on data packets that are received. They can also use these to reroute past any bottlenecks and congestion on the wider network.