This section will provide a detailed description of how the dual bus
system schedules accesses to the network. An overview of the modes of
access control will be included in this section as well.
DQDB uses two buses to which every station is connected. In order to
transmit a piece of data, a station must first gain access to the bus.
This is accomplished by using one of two different modes of access
control: queued arbitrated (QA) and prearbitrated (PA), each of which
uses QA and PA cells (slots) respectively. It is important to point
out that QA is used to provide non-isochronous services (data
traffic) and PA is used in support of isochronous services (voice)
Each bus carries data flow in one direction only. If a station wishes to
transfer data in the direction of bus "A", for instance, it must first send
a request back in the opposite direction through the other bus (bus "B").
This request will be seen by all the other hosts downstream on bus "B" as
the cell travels along. Upon seeing this request, each host will increment
their "request" counter to keep track of how many hosts are being queued to
access bus "A".

Figure 1. Basic Elements in the DQDB Access Protocol
These "request" counters, in conjunction with a "countdown" counter, are
used to determine the order in which each host will gain access to bus
"A".
This type of access to the bus lends itself to establishing levels of
priority and in fact, that is the case with the DQDB Access
Protocol. In the QA access mode there are two different cases: Single
priority QA access and Priority Distributed QA access.
Single Priority QA Access
In this case there is a single queue in each Access Unit (AU) because
every QA Segment has the same priority. When an AU has a QA Segment
to transmit, it first has to reserve a slot for transmission. Thus it
issues a single REQUEST (REQ) bit on the reverse bus. Then, it waits
for the next free REQ bit and it writes to it making all upstream AUs
"aware" of the presence of an additional QA segment queued for access
to the bus.
The queue is controlled by counters in each node. Each node has two
different counters. One keeps track of the number of QA segments
queued downstream from itself for access to the forward bus (RQ
Counter) while the other keeps track of the number of downstream
segments that are queued ahead of it (CD Counter).
Each time a REQ passes on the reverse bus, the RQ counter of each node
is incremented by one. On the other hand, each time an empty slot
passes by a node that is not queued to transmit, one REQ in the RQ
counter gets canceled. The reasoning behind this is that the empty
slot will be used by a downstream AU that has QA segments queued for
transmission.

Figure 2. Node not queued to send on Bus A
In addition to sending the REQ for the reverse bus, the AU having a QA
segment to send transfers the current value of the RQ counter to the
CD counter. For every empty slot that passes the node on bus A, the
CD counter gets decremented by one. When the CD counter equals zero,
the node can send the segment on the next empty slot that passes on
bus A. Finally, any requests that are detected on bus B are added to
the RQ counter while the node waits to send its segment.

Figure 3. Node queued to send on Bus A
It is important to point out that except for bandwidth balancing (see
[1] for a more detailed treatment of
this subject) a slot is never wasted if there are queued segments
waiting to be transmitted. This is guaranteed by the CD counter which
represents the number of segments ahead in the distributed queue.
Thus, since at any point in time one segment must have queued first
then it is always guaranteed that at least one of the AUs has a CD
counter equal to zero.(Figures and discussion are based on the
treatment by [1])
Priority Distributed QA Access
The distributed queuing protocol supports different levels of
priority. Thus, in principle the protocol behaves the same as in the
single priority case, except for the fact that now there are several
queues (as many an priority levels). In addition, nodes can not use
empty slots for a given priority segment if there are requests at
higher priority levels. Finally, notice that RQ counters will notice
REQs at equal and higher priority levels as well as the CD counters
will get decremented each time they see an empty slot pass by and
incremented for requests received at higher priority levels.