 when the user is not on his or her home network. A central requirement for 3G systems is that users must be able to roam from the network of their service provider to any other network (global roaming). This way, a user can tap into the services to which he or she is subscribed even if he or she is on vacation or traveling internationally. Whenever a user is roaming, two distinct domains come into play: the home domain and visited domain. The former is the IP multimedia domain of his or her ser- vice provider and the latter is the IP multimedia domain of the network that he or she is currently using. When a user establishes a session, his or her SIP messages typically traverse a set of CSCFs in both the visited and the home domains. Fig- ure 7-2 shows how a user sends a REGISTER from his or her visited domain to his or her home domain. The message flow is exactly the same as in the previous picture, but in this example, it is possible to distinguish both domains. When the P-CSCF of the visited domain receives the REGISTER, it detects that this user is not at his or her home domain. The P-CSCF forwards the REGISTER to the user's home domain. From that point on, the process is the same as in any registration from the home domain. The I-CSCF chooses an S-CSCF by consulting the HSS and the S-CSCF down- loads the profile of the user. Note that after the registration, the HSS knows which S-CSCF has been associated with the user. Therefore, in case of an incoming INVITE for that user, the HSS will be able to provide enough information to locate the S- CSCF in charge of the user. The S-CSCF will then forward the INVITE to the user. This scenario is described in the following example. Building Applications with the SIP Toolkit Visited domain Home domain Figure 7-2 Registration in a Laura's 3G network from a terminal P-CSCF I-CSCF S-CSCF visited domain. (1) REGISTER (2) REGISTER (3) Query (4) Response (5) REGISTER (6) Query (7) Response (8) 200 OK (9) 200 OK (10) 200 OK Session Between Users Who Are Roaming Figure 7-3 is 