Priority Packet Delivery
If there are two input ports in a router waiting to use a particular output port, then an arbitration mechanism is used to select which input port is to be served. The arbitration mechanism can include a priority scheme. There is no priority flag available within the header of a SpaceWire packet to specify its priority level. The SpaceWire header only contains address information, so packet priority must be associated with a logical address (or with the input port number). In the routing tables logical addresses may be assigned high or low priority. High priority logical addresses have preferential access to an output port when arbitration takes place. A logical address that has been assigned high priority, acts as a high priority channel across the network from many possible sources to the one destination. If high and low priority access to a particular destination is required then two logical addresses are required for a particular destination, one assigned high priority and the other low priority. A source can then decide which logical address to use when sending a packet to a destination, depending on the required priority of the packet. There is a compromise between the number of destinations that can be addressed and the number of priority levels. With two priority levels it is possible to have, for example, 128 low priority destinations and 96 high priority destinations within the 224 logical addresses available. Priority is a means of providing quality of service control.
It is possible to ensure real-time, deterministic delivery of commands (packets) using priority addresses provided that there are no possible clashes between routes through the network operating priority addressing. This can be achieved, for example, if there is only one node sending out priority commands. If deterministic delivery is required there must also be a limit to the maximum packet size used on the network.
Alternatively nodes can take turns to transmit their high priority packets possibly using time-codes to determine which node transmits next.