Part of a Router that connect its Input Ports to its Output Ports.
Switching via Memory
The earliest routers were traditional computers that used CPU to control the connection between input and output ports.
An input port with an arriving packet signals the routing processor via an interrupt. The packet is then copied from the input port into processor memory and copied into the appropriate output port.
If the memory bandwidth allows for a maximum of packets per second to be written into, or read from, memory - then the overall forwarding throughput must be less than .

Switching via a Bus
Another approach is to transfer packets directly over a shared bus without an intervening routing processor.
This is typically done by having the input port pre-pend a switch-internal label to the packet to indicate which output port it should be transferred to. All output ports that the packet passes to down the bus will receive the packet but only the output port that matches the label will keep it. When an output port has kept the packet the label it removes the label.
Since only one packet can cross the bus at a time, the switching speed of this approach is limited to the bus speed.

Switching via an Interconnection Network
An approach to overcome the bandwidth limitation of a single shared bus is to use an interconnected network.
Such could be the crossbar switch, shown below, that consists of busses that connect input ports to output ports.
When a packet arriving from port A and need to be forwarded to port Y, then the switch fabric controller connects only the intersection of the busses for A and Y, such that the packet sent from A is only picked up by bus Y.
This approach, unlike the switching via memory or single bus, is non-blocking and thus allows for packets with different output ports to be processed in parallel.
