There have been concerns expressed in IETF that 3GPP is abusing IETF protocols and that we should do something about it. The 3GPP usage of SIP certainly appears to be inconsistent with that posited by the IETF. We may wish to consider what approach, if any, should be pursued. This text addresses the following: * General issues with the 3GPP approach * Underlying assumptions by 3GPP that contribute to the inconsistency. * Specific design issues relating to SIP that create problems. * Options that we may wish to consider. General issues with 3GPP Approach: 1) Conformance to syntax, but not philosophy or rationale of IETF specifications. The packets look right "on the wire", but the overall systems operate very differently. 2) An IETF SIP client will not work on the 3GPP network. 3) 3GPP clients can interoperate only in a limited fashion with IETF systems. 4) The 3GPP model does not support IETF goals of openess and transparency. There are several underlying assumptions made by 3GPP that seem to differ from the IETF approach and that drive much of the disagreeable behavior. 1) The 3GPP network is closed: Only 3GPP-specific phones may be used. The phones and the network are designed such that the phones MUST talk through the 3GPP "proxy" network. There MAY be gateways to talk to the outside world. 2) The 3GPP network is "trusted": As they explicitly trust all network elements, protocol provisions intended by the IETF to protect the user from aberrant network elements represent unecessary overhead and may be ignored. 3) 3GPP clients may use external or "Internet" SIP proxy-based services only by the explicit consent of the operator: An explicit configuration change is required to use any such service. Operational issues dictate that this sort of change will either be forbidden or expensive. This effectively prevents the 3GPP user from using most of the services that SIP was designed to enable. Services that operate like traditional PSTN "service nodes" and are directly addressed (rather than traversed as proxies) may be usable subject to the constraints imposed by the rest of the 3GPP architecture, including #1 above and #4 below. 4) Support for end-to-end message protection using S/MIME is not required by 3GPP: This mechanism is required by RFC 3261 but appears to be specifically precluded by 3GPP. Certainly, 3GPP Release 5 will not address it, and the operation of the 3GPP "proxy" network in release 5 prevents its use. Millions of non-upgradeable phones will be issued under release 5, assuring incompatibility of security provisions for years to come. 5) The "network" must be protected from the users: 3GPP designs to protect "the network" from the users rather than protecting the users from hostile network elements. Protection techniques rely heavily on both security-through-obscurity (topology hiding, etc.) and filtering. 1) The P-CSCF may send a BYE on behalf of the UA, generally because the P-CSCF has been notified by the radio layer that the UA has lost contact. Of course, it doesn't have the credentials to authenticate the BYE, so many UAs will consider this as a forged message. The side effect is that 3GPP UAs become vulnerable to DoS attacks using forged BYEs. Reference: 5.2.8.1.2 Release of an existing session Upon receipt of an indication that the radio interface resources are no longer available for a served user, for whom one or more ongoing session exists, the P-CSCF shall release each of the related dialogs by applying the following steps: 1) if the P-CSCF serves the calling user of a session it shall generate a BYE request based on the information saved for the related dialog, including: - a Request-URI, set to the stored Contact header provided by the called user; - a To header, set to the To header value as received in the 200 (OK) response for the initial INVITE request; - a From header, set to the From header value as received in the initial INVITE request; - a Call-ID header, set to the Call-Id header value as received in the initial INVITE request; - a CSeq header, set to the CSeq value that was stored for the direction from the calling to the called user, incremented by one; - a Route header, set to the routeing information towards the called user as stored for the dialog; - further headers, based on local policy or the requested session release reason. 2) If the P-CSCF serves the called user of a session it shall generate a BYE request based on the information saved for the related dialog, including: - a Request-URI, set to the stored Contact header provided by the calling user; - a To header, set to the From header value as received in the initial INVITE request; - a From header, set to the To header value as received in the 200 (OK) response for the initial INVITE request; - a Call-ID header, set to the Call-Id header value as received in the initial INVITE request; - a CSeq header, set to the CSeq value that was stored for the direction from the called to the calling user, incremented by one $(H i(Bf no CSeq value was stored for that session it shall generate and apply a random number within the valid range for CSeqs; - a Route header, set to the routeing information towards the calling user as stored for the dialog; - further headers, based on local policy or the requested session release reason. 3) send the so generated BYE request towards the indicated user. 4) upon receipt of the 2xx responses for the BYE request, shall delete all information related to the dialog and the related multimedia session. ------------------------------------------------------------------------ ------ Issue: 2) The P-CSCF strips away Route, Record-Route, Via, Path, and P-Service-Route headers before passing messages on to the UA. It then reinserts them properly on messages in the other direction, and may also strip out Route headers inserted by the UA. This breaks end-to-end protection and prevents the UA from accessing external proxy services. It also prevents the UA from knowing about any proxies that may have piggybacked on its registration using the Path mechanism, which is a serious violation of the openness principle. Reference: 5.2.2 Registration When the P-CSCF receives a REGISTER request from the UE, the P-CSCF shall: 1) insert a Path header in the request including an entry containing: - the SIP URL identifying the P-CSCF; - an indication that requests routed in this direction of the path (i.e. from the S-CSCF to the P-CSCF) shall be treated as for the mobile-terminating case. This indication may e.g. be in a Path header parameter, a character string in the user part or be a port number; 2) insert a Supported and a Require header both containing the option tag "path";