As shown, STREAMS provides a mechanism for building multiplexed Stream configurations. However, the criteria on which a multiplexor routes data is driver-dependent. For example, the protocol multiplexor shown before might use address information found in a protocol header to determine over which subnetwork data should be routed. It is the multiplexing driver's responsibility to define its routing criteria.
One routing option available to the multiplexor is to use the muxid value to determine to which Stream data should be routed (remember that each multiplexor link is associated with a muxid). I_LINK passes the muxid value to the driver and returns this value to the user. The driver can therefore specify that the muxid value must accompany data routed through it. For example, if a multiplexor routed data from a single upper Stream to one of several lower Streams (as did the IP driver), the multiplexor could require the user to insert the muxid of the desired lower Stream into the first four bytes of each message passed to it. The driver could then match the muxid in each message with the muxid of each lower Stream, and route the data accordingly.