An n1 x n2 switch consists of n1 input ports, n2 output ports, links connecting each input to every output, control logic to select a specific connection, and internal buffers.
A switch is used to establish connections from the input ports to the output ports. These connections may be one-to-one, which represents point-to-point connections, or one-to-many, which represents multicast or broadcast. The case of many-to-one should cause conflicts at the output ports and therefore needs arbitration to resolve conflicts if allowed. When only one-to-one connections are allowed, the switch is called a crossbar. An n x n crossbar switch can establish n! Connections.
It can allow only one-to-one connections, the first input port should have n choices of output ports, the second input port will have (n - 1) choices, the third input port will have (n - 2) choices, and so on. Thus, the number of one-to-one connections is n * (n - 1) * (n - 2) * 2 * 1 = n!.
Routing can be achieved using two mechanisms such as source-path and table-based. In the source path, the entire path to the destination is stored in the packet header at the source location. When a packet enters the switch, the outgoing port is determined from the header. Used routing data is stripped from the header and routing information for the next switch is now in the front.
In table-based routing, the switch must have a complete routing table that determines the corresponding port for each destination. When a packet enters the switch, a table lookup will determine the outgoing port.
The figure shows the difference between source-path routing and table-based routing in the case when a packet enters an 8-port switch at port 0. In the source-path case, the header contains the entire path and the next port is port 6. In the table-based case, the destination address dest-id is looked up in the routing table and port 6 is followed.