When I first came across the VoLTE service registration process I was a bit baffled why it is split in two procedures. The reason for my confusion was that in the circuit switched world there is only one process, a “location update”. Once done that’s it and the mobile can go back to sleep. In VoLTE there is a registration procedure and a subscription procedure that follows. Here’s why:
In VoLTE the registration procedure is for authenticating the user and establishing a secure tunnel. Once that is done the user can make and receive calls. What the network can’t do at this point however, is to inform the user about registration changes, which happen, for example, when the S-CSCF needs to restart or other events force the registration to be canceled from the network.
As a consequence there is a second procedure that follows the registration procedure which is a subscription to the ‘registration event package’ This is done by sending a SIP SUBSCRIBE message to the network that contains an Event: reg header line and a couple of other things as described in the specifications. The network answers with a 200 OK message followed by a NOTIFY message that contains subscription information.
When Things Go Wrong In The Network
Should then network then at any point need to cancel the registration it would send another NOTIFY message with a Subscription-State: terminated; reason=… header line. Not a pretty thing…