The Redirect server (RS) is very simple and performs only a few basic tasks. It receives SIP REGISTER messages from User Agents (UAs), keeps track of registered users and their locations, and provides routing information for SIP INVITE messages.
The RS knows about each user in the system. When an ingress Marshal forwards a new call request to the RS, the RS decides where the call needs to go by looking at the calling party, the intended called party, and any registration information it may have about either party. If the Request URI is an external phone number, the RS looks in the dial plan for meaningful routing information.
The signaling message also contains information that tells the RS where the call has already been, which is needed to figure out where it needs to go next. For example, the call may require routing to a Feature server before reaching the egress Marshal. Before forwarding the call, the RS checks to see if the intended servers are up and running. If the next intended server is down, the RS forwards the message to a substitute server if one is available.
Key data structures are the subscriber container, IP and phone dial plans, and the server container. Figure 12-1 shows a class diagram of the structures found within the RS. The gray background highlights the base classes, as discussed in Chapter 9. The classes marked with asterisks are single instances of these objects.
Figure 12-1. RS class diagram