## 5 Predefined Path-Based Techniques
### Ring-Based Dual Paths (RDP)
#### 5.3.2 RDP Operations  
The functions of discovering and establishing dual paths between DANH rings are implemented at QuadBox nodes. RDP first builds a MAC table for each access QuadBox that connects to a DANH ring, then discovers and establishes dual paths for each connection pair of DANH rings, and, finally, sets up the ring-based dual paths by building a forwarding table for each trunk QuadBox. * Building the MAC table: Each access QuadBox periodically sends a Hello message into its DANH ring. When a DANH node in the ring receives a Hello message, it replies with an Acknowledgment (ACK) message, and then forwards the received Hello message to other DANH nodes in the DANH ring. Each access QuadBox builds its MAC table based on received ACK messages from DANH nodes in its DANH ring. When an access QuadBox receives an ACK message, it checks if its MAC table contains the source MAC address of the ACK message. If not, the QuadBox adds the source MAC address into its MAC table. If so, the ACK message is discarded. By learning the MAC addresses of DANH nodes, each access QuadBox learns the MAC addresses of all the DANH nodes connected to its DANH ring. Based on the MAC table, an access QuadBox will not forward a unicast frame into its DANH ring if its MAC table does not contain the destination MAC address of the frame. 2. Establishing ring-based dual paths: The functions of discovering and establishing dual paths between DANH rings are performed at access QuadBox nodes through a two-way handshake process: path request and path reply. * Path request: To discover and establish ring-based dual paths for each connection pair of DANH rings, each access QuadBox sends a path request to all of the other access QuadBoxes by broadcasting a path request (PREQ) message. The PREQ message contains information of a sequence number, the source ring ID, the MAC table of the access QuadBox, and a node list that contains ID of QuadBoxes through which the PREQ message has been passed. When a trunk QuadBox receives a PREQ message, it updates its ring table based on the MAC table of the PREQ message. Each entry of the ring table consists of a MAC address of a DANH node and a ring ID of a DANH ring to which the DANH node is being connected. After updating the ring table, the trunk QuadBox adds itself to the node list of the PREQ message and then sends the updated PREQ messages over all of its ports, except the received port. When an access QuadBox node receives a PREQ message, it replies to the path request by sending a path reply (PREP) message, and then adds itself to the node list of the PREQ message and forwards the updated PREQ messages to QuadBox nodes. * Path reply: When an access QuadBox has received a PREQ message sent by another access QuadBox, it builds a path between the sending and receiving access QuadBox nodes based on the node list of the PREQ message. The path is also a ring-based path between the source ring to which the sending QuadBox is connecting and the destination ring to which the receiving QuadBox is connecting. The receiving QuadBox then responds to the path request by sending a PREP message to the sending QuadBox. The PREP message is generated based on information in the received PREQ message. The PREP message contains information of a sequence number, the source ring ID, the destination ring ID, and a ring-based path between the source and destination rings built based on the node list of the received PREQ message. To reduce path setup overhead for each connection pair of DANH rings, only the access QuadBox that connects to the DANH ring with the lower ring ID sends the PREP message. * Building the forwarding table: Based on received PREQ and PREP messages, trunk QuadBoxes in between ring-based paths build their forwarding table. Each entry of the forwarding table consists of a source ring ID, a destination ring ID, and an output port. When a trunk QuadBox receives a PREQ of an access QuadBox node, it notes the received port associated with the source ring ID of the PREQ message.