Here's a question that's been on my mind for quite a number of years know which I've finally had the time to figure out: When a 3G or LTE Voice over IP user (think IMS One Voice or VOLGA) roams in a network in another country, how can the local resources be used?
The question might seem a bit strange at first but today, GPRS and 3G connections abroad are usually connected back to the GGSN (or the LTE PDN-GW) in the home network. This has a number of advantages. For the user, such a setup is good as no configuration changes are necessary to allow packet switched roaming. Also, the additional latency incurred is often not very high when the roaming and home networks are not too far away from each other or if the servers the user accesses are in his home country anyway. For the network operator, this home routing has the advantage that the connection remains under his control and he can collect billing information and meet the traffic policy as per the contract with the subscriber.
So far, so good. But for voice over ip, the issue is that a call to someone in the visited country first goes back to the home network and then has to come back to the visited network. If one roaming subscriber calls another roaming subscriber both in the same country, the speech packets travel backwards and forwards several times. Also, its difficult to establish local emergency calls this way as the voice infrastructure of the home country is used that knows nothing about emergency numbers in foreign countries.
For this reason, the GPRS standards that govern 2G, 3G and LTE have always included a sort of "local breakout" option with which the GGSN (or LTE PDN-GW) in the visited country can be used. This is good for network operator based VoIP as this allows the use of the visited network voice infrastructure. The disadvantage is, of course, that the home network operator has little to no control over the connection and can't do the billing for it.
So much for the foreplay. How does it work in practice. There are two interesting documents that describe the details. First, there is 3GPP TS 23.060 which describes the protocol theory and then there is the GSMA IR.33 GPRS Roaming Guidelines which describes how things can work in practice which is linked at the end of this post over at LinkedIn. In short, the two documents describe the process as follows:
The subscribers record in the HLR contains a VPLMN (Visited Network) Address Allowed flag in the GPRS permissions. If set to 'no', and that's the default that is used today, all GPRS PDP context activations have to go back to a home GGSN. This is done by appending the Operator ID to the APN sent by the mobile device. A subsequent DNS query with that extended APN then results in the IP address of the GGSN in the home network to which a connection is then established.
If the VPLMN Address Allowed flag is set to 'yes', a GPRS connection can remain in the visited network, i.e. a GGSN in the visited network can be used if (!) the Access Point Name specified by the mobile device is known in the visited network. In other words, there needs to be some sort of information exchange between home and visited network on the APNs that can be used locally. In this scenario, it's the Operator ID of the visited network operator and not that of the home network operator that is attached to the APN sent by the mobile device before the DNS query for the IP address of the GGSN is made. If the APN is unknown, as far as I understand the documents (and I'm not quite sure about this), a GGSN in the home network is established in case the APN is known there.
There we go, that's the process for a "local breakout" in the visited network.