The current implementation of reservation() is based on the socket interface and uses a special unused Ethernet address1 to alert the local RETHER module in the device driver of the reservation request. Upon detecting such a request, RETHER reserves a RETHER connection to the target receiver according to the requested bandwidth requirement, and if successful, records a mapping between the reserved RETHER connection's ID and the source port number associated with the socket descriptor to be returned to the sender application. At run time, RETHER consults with this mapping to determine which RETHER connection each IP packet should be sent on. Packets that are not parts of reserved connections are sent on a pre-established RETHER connection by default.
In the absence of real-time connections, the RETHER network operates under the original CSMA/CD protocol. When the first real-time bandwidth reservation request arrives, the RETHER network switches to a token-passing mode. In this mode, channel access for all traffic, real-time and non-real-time, is regulated by a token. Intuitively time is divided into cycles. In each cycle, the token first services all the nodes that have real-time data to send (called real-time (RT) nodes), and then it attempts to service non-real-time (NRT) nodes in a round-robin fashion. Essentially NRT nodes share the bandwidth remaining in each cycle after all RT nodes have been serviced. Note that all network nodes, including those making bandwidth reservations, are NRT nodes. The network stays in the token-passing mode until the last real-time session terminates. At this time, the network switches back to the CSMA/CD protocol. This hybrid scheme reduces the performance impact due to token passing on non-real-time traffic.