A computer-implemented method for operating a switch fabric, comprising: creating a set of virtual links (102... 108) for a first set of physical ports (110, 112) in the switch fabric; using a set of virtual port numbers to create a set of mappings between the set of virtual links and a second set of physical ports (118...120) in the switch fabric, wherein the second set of physical ports is connected to the first set of physical ports using a single physical link; and using the mappings to provide non-blocking behavior in traffic from the first set of physical ports to the second set of physical ports; wherein using the set of virtual port numbers to create the set of mappings between the set of virtual links and the second set of physical ports in the switch fabric comprises: creating a first mapping from a unique destination identifier (216, 220) associated with one or more ports in the second set of physical ports to a virtual port number; creating a second mapping from a service level associated with a packet to a virtual link from the set of virtual links; and associating the virtual port number and the virtual link with a virtual output queue, VOQ, of a physical port from the second set of physical ports; and wherein using the mappings to provide non-blocking behavior in traffic from the first set of physical ports to the second set of physical ports comprises: using the first and second mappings to place a packet comprising the unique destination identifier and the service level in the VOQ; and removing the packet from the VOQ based on a fullness of an output buffer for the physical port. creating a set of virtual links (102... 108) for a first set of physical ports (110, 112) in the switch fabric; using a set of virtual port numbers to create a set of mappings between the set of virtual links and a second set of physical ports (118...120) in the switch fabric, wherein the second set of physical ports is connected to the first set of physical ports using a single physical link; and using the mappings to provide non-blocking behavior in traffic from the first set of physical ports to the second set of physical ports; wherein using the set of virtual port numbers to create the set of mappings between the set of virtual links and the second set of physical ports in the switch fabric comprises: creating a first mapping from a unique destination identifier (216, 220) associated with one or more ports in the second set of physical ports to a virtual port number; creating a second mapping from a service level associated with a packet to a virtual link from the set of virtual links; and associating the virtual port number and the virtual link with a virtual output queue, VOQ, of a physical port from the second set of physical ports; and wherein using the mappings to provide non-blocking behavior in traffic from the first set of physical ports to the second set of physical ports comprises: using the first and second mappings to place a packet comprising the unique destination identifier and the service level in the VOQ; and removing the packet from the VOQ based on a fullness of an output buffer for the physical port. creating a first mapping from a unique destination identifier (216, 220) associated with one or more ports in the second set of physical ports to a virtual port number; creating a second mapping from a service level associated with a packet to a virtual link from the set of virtual links; and associating the virtual port number and the virtual link with a virtual output queue, VOQ, of a physical port from the second set of physical ports; and wherein using the mappings to provide non-blocking behavior in traffic from the first set of physical ports to the second set of physical ports comprises: using the first and second mappings to place a packet comprising the unique destination identifier and the service level in the VOQ; and removing the packet from the VOQ based on a fullness of an output buffer for the physical port. using the first and second mappings to place a packet comprising the unique destination identifier and the service level in the VOQ; and removing the packet from the VOQ based on a fullness of an output buffer for the physical port.