SIPCORE Working Group C. Holmberg
Internet-Draft Ericsson
Intended status: Standards Track January 12, 2018
Expires: July 16, 2018
Push Notification with the Session Initiation Protocol (SIP)
draft-ietf-sipcore-sip-push-04
Abstract
This document describes how push notification mechanisms can be used
to wake up suspended Session Initiation Protocol (SIP) User Agents
(UAs), in order to be able to receive and generate SIP requests. The
document defines new SIP URI parameters, that can be used in a SIP
REGISTER request to provide push notification information from the
SIP User Agent (UA) to the SIP entity (realized as a SIP proxy in
this document) that will send a push request to the push server in
order to trigger a push notification towards the SIP UA.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 16, 2018.
Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
Holmberg Expires July 16, 2018 [Page 1]
Internet-Draft SIP PUSH January 2018
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Push Resource ID (PRID) . . . . . . . . . . . . . . . . . . . 5
4. SIP User Agent (UA) Behavior . . . . . . . . . . . . . . . . 5
5. SIP Proxy Behavior . . . . . . . . . . . . . . . . . . . . . 6
5.1. PNS Provider Information . . . . . . . . . . . . . . . . 6
5.2. Trigger Periodic Re-registration . . . . . . . . . . . . 6
5.3. SIP Request . . . . . . . . . . . . . . . . . . . . . . . 7
6. Network Address Translator (NAT) Considerations . . . . . . . 8
7. Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.1. 555 (Push Notification Service Not Supported) Response
Code . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.2. sip.pns Feature-Capability Indicator . . . . . . . . . . 8
7.3. SIP URI Parameters . . . . . . . . . . . . . . . . . . . 9
8. PNS Registration Requirements . . . . . . . . . . . . . . . . 9
9. pn-provider, pn-param and pn-prid URI Parameters for Apple
Push Notification service . . . . . . . . . . . . . . . . . . 9
10. pn-provider, pn-param and pn-prid URI Parameters for Google
Firebase Cloud Messaging (FCM) push notification service . . 10
11. Security Considerations . . . . . . . . . . . . . . . . . . . 10
12. IANA considerations . . . . . . . . . . . . . . . . . . . . . 11
12.1. SIP URI Parameters . . . . . . . . . . . . . . . . . . . 11
12.1.1. pn-provider . . . . . . . . . . . . . . . . . . . . 11
12.1.2. pn-param . . . . . . . . . . . . . . . . . . . . . . 11
12.1.3. pn-prid . . . . . . . . . . . . . . . . . . . . . . 11
12.1.4. pn-enckey . . . . . . . . . . . . . . . . . . . . . 12
12.1.5. pn-enccode . . . . . . . . . . . . . . . . . . . . . 12
12.2. SIP Response Code . . . . . . . . . . . . . . . . . . . 12
12.3. SIP Global Feature-Capability Indicator . . . . . . . . 12
12.4. PNS Sub-registry Establishment . . . . . . . . . . . . . 13
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 14
14.1. Normative References . . . . . . . . . . . . . . . . . . 14
14.2. Informative References . . . . . . . . . . . . . . . . . 14
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction
In order to save resources (e.g, battery life) some devices and
operating systems require suspended Session Initiation Protocol (SIP)
User Agents (UAs) [RFC3261] to be woken up using a push notification
service. Typically each operating system uses a dedicated push
Holmberg Expires July 16, 2018 [Page 2]
Internet-Draft SIP PUSH January 2018
notification service. For example, Apple iOS devices use the Apple
Push Notification service (APNs).
Due to the restriction above, applications can not be woken up by
non-push notification traffic. This means that a suspended SIP UA
will not be able to receive an incoming SIP request (e.g., a SIP
INVITE request), or to send periodic re-registration requests.
This document describes how push notification mechanisms can be used
to wake up suspended SIP UAs, in order to be able to receive and
generate SIP requests. The document defines new SIP URI parameters,
that can be used in a SIP REGISTER request to provide push
notification information from the SIP UA to the SIP entity (realized
as a SIP proxy in this document) that will send a push request to the
push server in order to trigger a push notification towards the SIP
UA.
When a SIP UA registers to a Push Notification Service (PNS), it will
receive a unique Push Resource ID (PRID) associated to that
registration. The SIP UA will provide the PRID to the SIP network in
a SIP REGISTER request. A SIP proxy (e.g., the SIP registrar) will
store a mapping between the registered contact and the PRID.
When the SIP proxy receives (or, in case the SIP proxy is also
registrar, initiates) a SIP request for a new dialog, or a stand-
alone SIP request, addressed towards a SIP UA, or when the SIP proxy
determines that the SIP UA needs to perform a re-registration, the
SIP proxy will send a push request to the push notification service
used by the SIP UA, using the push resource ID associated with the
registered contact of the SIP UA, in order to trigger a push
notification towards the SIP UA. Once the SIP UA receives the push
notification, it will be to receive the SIP request, and to generate
a SIP request (e.g., a SIP REGISTER) itself. The proxy can use the
receipt of the REGISTER request as a trigger to forward SIP request
towards the UA, using normal SIP routing procedures.
Different push notification mechanisms exist today. Some are based
on there standardized mechanism defined in [RFC8030], while others
are proprietary (e.g., the Apple Push Notification service).
Figure 1 shows the generic push notification architecture supported
by the mechanism in this document.
Holmberg Expires July 16, 2018 [Page 3]
Internet-Draft SIP PUSH January 2018
+--------+ +--------------+ +-----------------+
| SIP UA | | Push Service | | SIP Proxy |
+--------+ +--------------+ +-----------------+
| | |
| Subscribe | |
|--------------------->| |
| | |
| Push Resource ID | |
|<---------------------| |
| | |
| SIP REGISTER (Push Resource ID) |
|===============================================>|
| | |
| | Push Message |
| | (Push Resource ID) |
| Push Message |<------------------------|
| (Push Resource ID) | |
|<---------------------| |
| | |
------- Push Notification API
======= SIP
REGISTER sip:alice@example.com SIP/2.0
Via: SIP/2.0/TCP alicemobile.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
To: Alice <sip:alice@example.com>
From: Alice <sip:alice@example.com>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: <sip:alice@alicemobile.example.com;
pn-provider=acme;
pn-param=acme-param;
pn-prid="ZTY4ZDJlMzODE1NmUgKi0K">
Expires: 7200
Content-Length: 0
Figure 1: SIP Push Notification Architecture
2. Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
Holmberg Expires July 16, 2018 [Page 4]
Internet-Draft SIP PUSH January 2018
3. Push Resource ID (PRID)
When an entity registers with a PNS it receives a unique Push
Resource ID (PRID), which is a value associated with the
registration.
The format of the PRID may vary depending on the PNS provider.
The details regarding discovery of the PNS, and the procedures for
the push notification registration and maintenance are outside the
scope of this document. The information needed to contact the PNS is
typically pre-configured in the operating system (OS) of the device.
4. SIP User Agent (UA) Behavior
Once the SIP UA has registered with the PNS and received the PRID
(using the protocol and procedures associated with the PNS), and when
the UA wants to receive push notifications triggered by the SIP
proxy, the UA MUST send a SIP REGISTER using normal SIP registration
procedures. The UA MUST add a pn-provider, a pn-prid and a pn-param
(if required for the specific PNS provider) SIP URI parameter to the
SIP Contact header field URI of the request. The pn-provider URI
parameter contains the PNS provider, the pn-prid URI parameter
contains the PRID value and the pn-param URI parameter contains
additional PNS-specific information.
When the SIP UA receives a 200 (OK) response to the SIP REGISTER
request, if the response does not contain a Feature-Caps header field
with a '+sip.pns' header field parameter, or if the response contains
a Feature-Caps header field with a '+sip.pns' header field parameter
with a parameter value that the UA does not support, the UA cannot
assume that push notifications will be triggered by a SIP proxy. The
actions taken by the UA might be dependent on implementation or
deployment architecture, and are outside the scope of this document.
When the SIP UA receives a push notification, it MUST perform a SIP
re-registration [RFC3261] by sending a SIP REGISTER request. If
there are Network Address Translators (NATs) between the SIP UA and
the SIP proxy, the REGISTER request will create NAT bindings allowing
incoming SIP requests to reach the UA. If the SIP proxy triggered
the push notification because it wants to forward a SIP request
towards the UA, the receipt of the REGISTER request can be used by
the proxy as a trigger to forward the request.
As long as the SIP UA wants the SIP proxy to continue sending push
requests, the UA MUST include a pn-provider, pn-prid and a pn-param
(if required for the specific PNS provider) SIP URI parameter in
every re-registration SIP REGISTER request sent towards the proxy.
Holmberg Expires July 16, 2018 [Page 5]
Internet-Draft SIP PUSH January 2018
Note that, in some cases, the PNS might update the PRID value, in
which case the pn-prid URI parameter within the re-registration
REGISTER request will contain the new value.
If the SIP UA at some point wants to stop the SIP proxy from sending
push requests, the UA MUST send a SIP REGISTER request without the
URI parameters described above, or remove the registration.
If the SIP UA expects to receive payload in the push notification,
the UA MAY add a pn-enckey and a pn-encsec SIP Contact header field
SIP URI parameter, in order to allow encryption of the data using the
mechanism in [RFC8291]. The pn-enckey URI parameter contains the
public key, and the pn-encsec URI parameter contains the
authentication secret [RFC8291]. The format of such payload is
outside the scope of this document.
NOTE: End-to-end encryption of the payload between the SIP proxy and
the SIP UA cannot be used if the push notification request payload
contains information that needs to be accessible by the PNS provider.
5. SIP Proxy Behavior
5.1. PNS Provider Information
The PNS provider is retrieved from the pn-provider SIP URI parameter.
The protocol and format used for the push request depends on the PNS
provider, and the details for constructing and sending the messages
are outside the scope of this specification.
5.2. Trigger Periodic Re-registration
If the SIP UA needs to perform periodic re-registrations, the proxy
needs to have information about when those re-registrations are to be
performed. The proxy either needs to contain the SIP registrar
functionality, or the proxy needs to retrieve the information from
the registrar using some other mechanism.
When the SIP proxy receives an indication that the SIP UA needs to
perform a re-registration, the proxy triggers a push request towards
the push notification server associated with the PRID.
Note that the re-registration needs to be triggered early enough, in
order for the re-registration request to reach the registrar before
the registration expires.
Holmberg Expires July 16, 2018 [Page 6]
Internet-Draft SIP PUSH January 2018
5.3. SIP Request
When the SIP proxy receives a SIP REGISTER request that contains a
pn-provider SIP URI parameter value that the proxy does not support,
or if the REGISTER request does not contain all information required
for the specific PNS provider, the proxy MUST either forward the
request (e.g., if the proxy is aware of another proxy that supports
the PNS provider) or send a SIP 555 (Push Notification Service Not
Supported) response to the REGISTER request. If the proxy sends a
SIP 555 (Push Notification Service Not Supported), the proxy SHOULD
insert a Feature-Caps header field with a '+sip.pns' header field
parameter in the response, indicating the PNS supported by the proxy.
If the SIP proxy supports the pn-provider SIP URI parameter value,
when the proxy receives (or, in case the proxy is the SIP registrar,
creates) a 200 (OK) response to the REGISTER request, the proxy MUST
insert a Feature-Caps header field with a '+sip.pns' header field
parameter in the response, in order to inform the SIP UA that the
proxy supports the PNS indicated by the pn-provider SIP URI parameter
value.
When the SIP proxy receives (or, in case the proxy is the SIP
registrar, creates) a SIP request for a new dialog (e.g., a SIP
INVITE request) or a non-dialog SIP request (e.g., a SIP MESSAGE
request) aimed for a SIP UA, if the Request-URI of the request
contains a pn-provider, a pn-prid and a pn-param (if required for the
specific PNS provider) SIP URI parameter, the proxy triggers a push
request towards the PNS associated with the PRID. After that the
proxy forwards the SIP request towards the UA using normal SIP
procedures.
As the push notification will trigger the SIP UA to perform a re-
registration, the SIP proxy can use the receipt of the SIP REGISTER
request as a trigger to forward SIP request towards the UA.
The SIP proxy MUST NOT transport the SIP request as push request
payload, instead of forwarding the request using normal SIP
procedures.
If the SIP proxy is able to assume that the SIP UA is awake, and that
the UA is able to receive the SIP request, the proxy MAY choose to
not trigger a push notification request before trying to forward the
SIP request towards the UA. The mechanisms for making such
assumption might be dependent on implementation or deployment
architecture, and are outside the scope of this document.
Holmberg Expires July 16, 2018 [Page 7]
Internet-Draft SIP PUSH January 2018
If the SIP proxy is not able to contact the push notification
provider, or to forward the SIP request to the SIP UA, the proxy MUST
reject the SIP request.
6. Network Address Translator (NAT) Considerations
Whenever the SIP UA receives a push notification, if the UA is
located behind a Network Address Translator (NAT), the UA might need
to take actions in order to establish a binding in the NAT, in order
for an incoming SIP request to reach the UA. By performing the re-
registration the UA will establish such NAT binding.
7. Grammar
7.1. 555 (Push Notification Service Not Supported) Response Code
The 555 response code is added to the "Server-Error" Status-Code
definition. 555 (Push Notification Service Not Supported) is used to
indicate that the server did not support the push notification
service specified in a 'pn-provider' SIP URI parameter.
The use of the SIP 555 response code is defined for SIP REGISTER
responses. Usage with other SIP methods is undefined.
7.2. sip.pns Feature-Capability Indicator
The sip.pns feature-capability indicator is used in a SIP 200 (OK)
response or in a 555 (Push Notficiation Service Not Supported)
response to indicate which push notification services the sender of
the response supports.
pns-fc = "+sip.pns" EQUAL LDQUOT pns-list RDQUOT
pns-list = pns *(COMMA pns)
pns = tag-value
; tag-value as defined in RFC 3840
The value of the pns is identical to the corresponding pn-provider
SIP URI parameter for the push notification service associated with
the value.
Holmberg Expires July 16, 2018 [Page 8]
Internet-Draft SIP PUSH January 2018
7.3. SIP URI Parameters
The section defines new SIP URI parameters, by extending the grammar
for "uri-parameter" as defined in [RFC3261]. The ABNF is as follows:
uri-parameter =/ pn-provider / pn-param / pn-prid / pn-enccode /
pn-enckey
pn-provider = "pn-provider" EQUAL pvalue
pn-param = "pn-param" EQUAL pvalue
pn-prid = "pn-prid" EQUAL pvalue
pn-enccode = "pn-enccode" EQUAL pvalue
pn-enckey = "pn-enckey" EQUAL pvalue
; pvalue as defined in RFC 3261
; EQUAL as defined in RFC 3261
; COLON as defined in RFC 3261
The format and semantics of pns-param is specific to a given
pns-provider value.
8. PNS Registration Requirements
When a new value is registered to the PNS Sub-registry, a reference
to a specification which describes the PNS associated with the value
is provided. That specification MUST contain the following
information:
o The value of the pn-provider SIP URI parameter.
o How the pn-prid SIP URI parameter value is retrieved and set by
the SIP UA.
o How the pn-param SIP URI parameter (if required for the specific
PNS provider) value is retrieved and set by the SIP UA.
o Whether there are any restrictions regarding usage of payload
encryption [RFC8291] with the associated PNS.
9. pn-provider, pn-param and pn-prid URI Parameters for Apple Push
Notification service
When the Apple Push Notification service (APNs) is used, the PNS-
related SIP URI parameters are set as described below.
The value of the pn-provider URI parameter is "apns".
Example: pn-provider = apns
Holmberg Expires July 16, 2018 [Page 9]
Internet-Draft SIP PUSH January 2018
The value of the pn-param URI parameter is the APNs App ID, which is
encoded by two values, separated by a period (.): Team ID and Bundle
ID. The Team ID is provided by Apple and is unique to a development
team. The Bundle ID is unique to a development team, and is a string
that will can match a single application or a group of applications.
Example: pn-param = DEF123GHIJ.com.yourcompany.yourexampleapp
The value of the pn-prid URI parameter is the device token, which is
a unique identifier assigned by Apple to a specific app on a specific
device.
Example: pn-prid = 00fc13adff78512
For more information on the APNs App ID:
https://developer.apple.com/library/content/documentation/General/
Conceptual/DevPedia-CocoaCore/AppID.html
For more information on the APNs device token:
https://developer.apple.com/library/content/documentation/NetworkingI
nternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_re
f/doc/uid/TP40008194-CH8-SW13
10. pn-provider, pn-param and pn-prid URI Parameters for Google
Firebase Cloud Messaging (FCM) push notification service
When Firebase Cloud Messaging (FCM) is used, the PNS related URI
parameters are set as described below.
The value of the pn-provider URI parameter is "fcm".
The value of the pn-param URI parameter is the Sender ID.
The value of the pn-prid URI parameter is the Registration token,
which is generated by the FCM SDK for each client app instance.
For more information on the Sender ID and Registration token:
https://firebase.google.com/docs/cloud-messaging/concept-options
11. Security Considerations
In addition to the information exchanged between a device and its PNS
in order to establish a push notification subscription, the mechanism
in this document does not require entities to provide any additional
information to the PNS.
Holmberg Expires July 16, 2018 [Page 10]
Internet-Draft SIP PUSH January 2018
Push notification mechanisms provide different methods to ensure that
malicious user cannot trigger push notifications to a device. Users
of the mechanism in this document MUST take measures to prevent push
notifications from being sent to a device from a malicious user.
In case entities do want to include payload in the push
notifications, this document defines the means for using end-to-end
payload encryption between the entity sending the push request and
the entity receiving the associated push notification.
12. IANA considerations
12.1. SIP URI Parameters
This section defines new SIP URI Parameters that extend the "SIP/SIPS
URI Parameters" sub-registry [RFC3969] under the sip-parameters
registry: http://www.iana.org/assignments/sip-parameters.
12.1.1. pn-provider
Parameter Name: pn-provider
Predefined Values: No
Reference: RFC XXXX
12.1.2. pn-param
Parameter Name: pn-param
Predefined Values: No
Reference: RFC XXXX
12.1.3. pn-prid
Holmberg Expires July 16, 2018 [Page 11]
Internet-Draft SIP PUSH January 2018
Parameter Name: pn-prid
Predefined Values: No
Reference: RFC XXXX
12.1.4. pn-enckey
Parameter Name: pn-enckey
Predefined Values: No
Reference: RFC XXXX
12.1.5. pn-enccode
Parameter Name: pn-enccode
Predefined Values: No
Reference: RFC XXXX
12.2. SIP Response Code
This section defines a new SIP response code that extends the
"Response Codes" sub-registry [RFC3261] under the sip-parameters
registry: http://www.iana.org/assignments/sip-parameters.
Response Code Number: 555
Default Reason Phrase: Push Notification Service Not Supported
12.3. SIP Global Feature-Capability Indicator
This section defines a new feature-capability indicator that extends
the "SIP Feature-Capability Indicator Registration Tree" sub-registry
[RFC6809] under the sip-parameters registry:
http://www.iana.org/assignments/sip-parameters.
Holmberg Expires July 16, 2018 [Page 12]
Internet-Draft SIP PUSH January 2018
Name: sip.pns
Description: This feature-capability indicator, when included in a
Feature-Caps header field of a REGISTER response, indicates that
the server supports the SIP push mechanism. The value is a list
of the push notification services supported by the server.
Reference: [RFCXXXX]
Contact: Christer Holmberg (christer.holmberg@ericsson.com)
12.4. PNS Sub-registry Establishment
This section creates a new sub-registry, "PNS", under the sip-
parameters registry: http://www.iana.org/assignments/sip-parameters.
The purpose of the sub-registry is to register SIP URI pn-provider
values.
This sub-registry is defined as a table that contains the following
three columns:
Value: The token under registration
Description: The name of the Push Notification Service (PNS)
Document: A reference to the document defining the registration
This specification registers the following values:
Value Description Document
------- ---------------------------------- ----------
apns Apple Push Notification service [RFC XXXX]
fcm Firebase Cloud Messaging [RFC XXXX]
Holmberg Expires July 16, 2018 [Page 13]
Internet-Draft SIP PUSH January 2018
13. Acknowledgements
Thanks to Mickey Arnold, Paul Kyzivat, Dale Worley, Ranjit Avasarala,
Martin Thomson, Mikael Klein, Susanna Sjoholm and Kari-Pekka Perttula
for reading the text, and providing useful feedback.
14. References
14.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
editor.org/info/rfc2119>.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
DOI 10.17487/RFC3261, June 2002, <https://www.rfc-
editor.org/info/rfc3261>.
[RFC3969] Camarillo, G., "The Internet Assigned Number Authority
(IANA) Uniform Resource Identifier (URI) Parameter
Registry for the Session Initiation Protocol (SIP)",
BCP 99, RFC 3969, DOI 10.17487/RFC3969, December 2004,
<https://www.rfc-editor.org/info/rfc3969>.
[RFC6809] Holmberg, C., Sedlacek, I., and H. Kaplan, "Mechanism to
Indicate Support of Features and Capabilities in the
Session Initiation Protocol (SIP)", RFC 6809,
DOI 10.17487/RFC6809, November 2012, <https://www.rfc-
editor.org/info/rfc6809>.
[RFC8030] Thomson, M., Damaggio, E., and B. Raymor, Ed., "Generic
Event Delivery Using HTTP Push", RFC 8030,
DOI 10.17487/RFC8030, December 2016, <https://www.rfc-
editor.org/info/rfc8030>.
14.2. Informative References
[RFC8291] Thomson, M., "Message Encryption for Web Push", RFC 8291,
DOI 10.17487/RFC8291, November 2017, <https://www.rfc-
editor.org/info/rfc8291>.
Holmberg Expires July 16, 2018 [Page 14]
Internet-Draft SIP PUSH January 2018
Author's Address
Christer Holmberg
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
Email: christer.holmberg@ericsson.com
Holmberg Expires July 16, 2018 [Page 15]