Checking Kamailio in a VoLTE environment we are finding issues to make it work.
First issues arise when getting AS to extract the required info from third party registration, primarily IMPUs.
Third party registration is sent to AS with IMPI in To header, preventing the AS from extracting the IMPU from the most obvious place, the To header, according to 3GPP 24.229:
"Notification of Application Servers about registration status [...] the To header field, which shall contain a non-barred public user identity belonging to the service profile of the processed Filter Criteria. It may be either a public user identity as contained in the REGISTER request received from the UE or one of the implicitly registered public user identities in the service profile, as configured by the operator;"
On the other hand, the third party registration can only embed in its body either the original request or the original response but not both (notice mutually exclusive "else if" statements in third_party_reg.c). Both are needed to extract Feature-Caps (from original request) and IMPUs (for instance from P-Associated-URI in original response).
Therefore to extract that info the AS should subscribe to the reg info in S-CSCF, but such SUBSCRIBE is rejected with 403. From Registrar IMS SCSCF documenation it looks like this is not supported:
"This function checks to see that a SUBSCRIBE request is authorised to subscribe to the particular identity. Only 3 entities can subscribe: The user agent to its own state The P-CSCF specified in the path header for that user Application Server (AS) not yet implemented"
Therefore question to the community is how these limitations are overcome in existing VoLTE deployments with Kamailio? Any advice?