Mux Adapter

A MuxAdapter multiplexes a number of logical channels across a number of physical channels. This uses the extended definition of multiplex to include M:N distribution, over the traditional N:1 interpretation.

To do this, we need to make the logical channels and the physical channels independent. This may include packet fragmentation of the supplied data to allow simultaneous transmission.

The solution is to augment the data fragments with logical channel and fragment number ids. This data is used at the far end of the communicating channels to reconstruct the original set of logical channels and reconstruct the data in those channels. The tags are stripped in the demultiplexing process (DemuxAdapter).

The same tags are useful for completeness checking. Missed fragments can be requested on the basis of these fragment ids, though the sender needs to support this functionality.

Each MuxAdapter has a corresponding DemuxAdapter which breaks out the logical channels from the physical channels.

As seen in TCP/IP, FibreChannel, ATM networks, DWDM, MIME, calculation farms.

A MicroArchitecture production.


Problem: Need to send many independent channels of data.

Context: Have only a limited number of physical channels.

Solution: Remove the implicit logical to physical identity by adding explicit id tags, and sending with the data so it can be reconstructed at the far end of the physical channels.


Generic Process:

 Take a chunk off one of the logical send buffers.
 Attach corresponding chunk #.
 Attach channel-id.
 Send chunk. 
 ------- lower level transport ------>
 Receive chunk.
 Detach channel-id and route trunk to corresponding logical receive buffer.
 Put chunk on buffer in order defined by chunk #.

Note: This entirely ignores error handling and connection setup which tend to be application specific.


Calculation farm:

 Grab subtransaction from full transaction.
 Attach subtransaction id.
 Attach transaction id.
 Send subtransaction.
 ---------- calculate ------------->
 Receive result (including source ids)
 Detach transaction id to identify particular result-set.
 Detach subtransaction id to identify particular result.
 Insert result in appropriate element.


Examples: TCP/IP. Each adapter multiplexes a single physical connection to many logical connections. The logical connections are described by <IP,socket#> endpoint pairs. Therefore each packet includes <source-ip, dest-ip, source-socket, dest-socket, fragment-id>. Both machines hold this information and route packets accordingly.


See also: DataReassembly


Last edit by GrammarVandal.


EditText of this page (last edited May 10, 2010) or FindPage with title or text search