Internet DRAFT - draft-arnold-sipcore-push-notification-gateway
draft-arnold-sipcore-push-notification-gateway
SIPCORE M. Arnold
Internet-Draft Metaswitch Networks
Intended status: Standards Track November 16, 2017
Expires: May 20, 2018
Using a Push Notification Gateway to improve session initiation with SIP
user agents
draft-arnold-sipcore-push-notification-gateway-00
Abstract
This document describes how a Push Notification Gateway (PNG) network
element can be used to allow SIP User Agents (UA) to run on devices
where background processing and monitoring is limited. In these
circumstances, it cannot be assumed that the SIP UA can regularly
REGISTER with the network or be able to detect inbound messages. A
PNG stores details provided to it by the UA during registration to
prompt a Push Notification Service (PNS) to generate a real-time
notification for the UA to REGISTER with the network and therefore be
available for inbound SIP messages.
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 https://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 May 20, 2018.
Copyright Notice
Copyright (c) 2017 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
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
Arnold Expires May 20, 2018 [Page 1]
Internet-Draft Push Notification Gateway November 2017
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
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. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Avoiding misrouting as a SIP User Agent traverses a network . 5
4. SIP User Agent (UA) Behaviour . . . . . . . . . . . . . . . . 5
4.1. Registering . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Receiving a Push Notification . . . . . . . . . . . . . . 6
5. Push Notification Service (PNS) Behaviour . . . . . . . . . . 6
6. Push Notification Gateway (PNG) Behaviour . . . . . . . . . . 7
6.1. Configuration . . . . . . . . . . . . . . . . . . . . . . 7
6.2. UA Registration . . . . . . . . . . . . . . . . . . . . . 7
6.3. Inbound INVITE or out-of-dialog requests . . . . . . . . 8
6.4. Prompting UA registration . . . . . . . . . . . . . . . . 9
7. Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
8. Security Considerations . . . . . . . . . . . . . . . . . . . 9
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
9.1. pn-svc . . . . . . . . . . . . . . . . . . . . . . . . . 9
9.2. pn-app-id . . . . . . . . . . . . . . . . . . . . . . . . 9
9.3. pn-token . . . . . . . . . . . . . . . . . . . . . . . . 10
10. Normative References . . . . . . . . . . . . . . . . . . . . 10
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10
1. Overview
Some mobile Operating Systems require or recommend that applications
do not persistently monitor for specific network events. These
Operating Systems may additionally or alternatively limit the amount
or frequency of background processing. This presents problems for
SIP User Agents (UAs) running on such devices which necessarily need
to monitor for changes in the network, for inbound SIP messages and
to re-register with the network at regular intervals.
This specification outlines a method whereby SIP UAs that can receive
requests from a Push Notification Service (PNS) can leverage push
notifications to ensure availability for receiving standard SIP
messages from the VoIP network.
This solution requires the following network elements (fully defined
below) to be present:
Arnold Expires May 20, 2018 [Page 2]
Internet-Draft Push Notification Gateway November 2017
1. A SIP UA capable registering for push notifications and adding
details of push notification subscriptions to SIP REGISTER
requests.
2. A Push Notification Service (PNS) capable of accepting
subscriptions from applications (in this context the SIP UA) and
providing a unique token to that application that can be used to
create a non-end-user generated real-time notification to the
application.
3. A Push Notification Gateway (PNG). This new network element is
in the signalling path between the UA and the SIP registrar. The
PNG is capable of storing PNS details provided by a SIP UA in a
map with its registrations. The PNG is capable of generating
push notifications to the UA by invoking the PNS.
During registration, the SIP UA adds details of the type of push
notification service and any PNS tokens to the Contact header on its
SIP REGISTER request. The PNG receives the REGISTER, stores off the
SIP UA's PNS details and passes the REGISTER through as a SIP Proxy.
The PNG can then contact the PNS to generate a push notification for
the SIP UA, this forces the UA to re-register with the network. The
PNG can perform this procedure to ensure the SIP UA registers in a
timely manner if the UA cannot schedule a background task to do so
itself. The PNG can also perform this procedure when it receives a
SIP INVITE or out-of-dialog request that needs to be routed to the
SIP UA. In this instance the PNG will store the SIP request, solicit
a push notification for the UA from the PNS, await a successful
REGISTER flow from the UA and then forward or reroute the suspended
SIP message. This ensures the UA is scheduled to process the inbound
message and that the PNG has the most up-to-date network information
for the UA prior to sending the message.
Figure 1 Illustrates mainline scenario for Push Notification Gateway.
SIP UA PNS SIP PNG Core Network
+ + + +
| Subscribe | | |
| ----------------> | | |
| Accept (token) | | |
| <----------------- | | |
| REGISTER (token) | |
| +------------------+----------------> | REGISTER |
| | | (token) |
| | | -------------> |
| | | 200 |
Arnold Expires May 20, 2018 [Page 3]
Internet-Draft Push Notification Gateway November 2017
| | | <------------- |
| 200 | |
| <------------------------------------ | |
| | | |
/ / / /
/ / / /
| | | INVITE |
| | | <------------- |
| | | 100 |
| | | ------------> |
| | Notification | |
| | (token) | |
| | <--------------- | |
| Notification | | |
| (token) | | |
| <----------------- | | |
| | | |
| REGISTER (token) | |
| +-----------------------------------> | |
| | | REGISTER |
| | | (token) |
| | | -------------> |
| | | 200 |
| | | <------------ |
| 200 | |
| <------------------------------------ | |
| | | |
| INVITE | |
| <------------------------------------ | |
| 100 | |
| ------------------------------------> | |
| 200 | |
| ------------------------------------> | |
| | | 200 (INV) |
| | | -------------> |
| | | ACK |
| ACK | <------------- |
| <------------------------------------ | |
+ + + +
Figure 1: PNG Mainline Scenario
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].
Arnold Expires May 20, 2018 [Page 4]
Internet-Draft Push Notification Gateway November 2017
3. Avoiding misrouting as a SIP User Agent traverses a network
As most push notification services are provided for use on mobile
devices it is possible that the device has moved access networks or
has had a Network Address Transversal (NAT) pinhole close since it
last registered. On some platforms SIP UA applications may not be or
cannot be alerted to these changes in network conditions.
To address this problem, this specification sets out a method whereby
all inbound SIP INVITE or out-of-dialo requests to the SIP UA are
preceded by the Push Notification Gateway (PNG) sending a push
notification via the Push Notification Service (PNS) prompting the
SIP UA to re-register with the network.
This re-registration provides up-to-date contact details as well as
ensuring that any required NAT functionality is in place in the
access network. Once this REGISTER flow has completed successfully
then the SIP PNG can contact the device successfully.
4. SIP User Agent (UA) Behaviour
This specification follows the guidance provided by Mobile OS
providers for waking OTT VoIP applications to handle incoming call
requests. The SIP UA must be a SIP client conforming to [RFC3261].
4.1. Registering
If a SIP User Agent wishes to receive push notifications prior to
inbound INVITE or out-of-dialog requests it MUST include pn-svc, pn-
app-id and pn-token URI parameters on the Contact header of its
REGISTER requests. The details of how these fields are generated
during the process of the SIP UA registering with the PNS are
implementation specific and are beyond the scope of this document.
The pn-svc parameter MUST contain the push notification service
identifier. This is an identifier which uniquely identifies a push
notification service that has been configured on the PNG.
The pn-token parameter MUST contain the push notification service
token. This is a token that the PNG can provide to the PNS to
generate a notification to the device running the SIP UA.
The pn-app-id parameter MUST contain the push notification service
app id. This is a unique indicator for the SIP UA so that the
operating system on the device correctly serves the notification to
the SIP UA.
Arnold Expires May 20, 2018 [Page 5]
Internet-Draft Push Notification Gateway November 2017
The combination of pn-app-id and pn-token must contain enough
information to uniquely define the SIP user agent among all functions
with push notification subscriptions on the service.
If a UA wishes to receive push notifications using a fictional push
notification service "abc" then an example Contact header on a
REGISTER request would be the following:
Contact: "Alice"<sip:SIPUA@11.22.33.44:5060>;expires=3600;pn-
svc=abc;pn-app-id=1234.com.sipua.application;pn-
token=abcdef1234567890
These fields being present indicates that the user agent MUST be sent
a push notification prior to receiving any inbound messages. These
parameters MUST either all be present on a REGISTER request or all
absent. Subsequent REGISTER requests from the SIP UA MAY add, remove
or modify these parameters to reflect changes in the UA's
capabilities or requirements. If a notification is not received
prior to a dialog creating inbound SIP message then the UA SHOULD
handle the request normally if possible.
Each SIP registration can support at most one push notification
association. If a user agent requires notification through multiple
different services it MUST include the details in separate SIP
registrations.
4.2. Receiving a Push Notification
On receipt of a push notification the User Agent MUST immediately
attempt to send a REGISTER request to its SIP registrar refreshing
the registration that matches the received token. This MUST be done
regardless of the amount of time left until the registration expires.
The user agent MAY subsequently carry out processing based on any
payload attached to the push notification. The user agent MUST NOT
process any SIP messages encoded in push notifications.
5. Push Notification Service (PNS) Behaviour
It is expected that different push notification services will have
varying designs and implementations for their interfaces. For a PNS
to conform to this specification it MUST meet the following criteria:
1. The PNS MUST accept subscriptions for specific applications on
specific devices, returning to the application a unique token
specific to that application on that device.
2. The PNS MUST generate a push notification for that application
and device that is served to the application in real-time when
Arnold Expires May 20, 2018 [Page 6]
Internet-Draft Push Notification Gateway November 2017
the token generated during the subscription process is provided
in a pre-defined format to the PNS.
3. The generated push notification MUST immediately schedule the
application and allow it to process the notification.
4. The PNS MUST allow push notifications to be generated from
devices other than the device making the subscription.
6. Push Notification Gateway (PNG) Behaviour
The PNG is a network element that acts as a SIP proxy transparently
routing SIP traffic with the following additional functionality. The
PNG MUST do the following:
1. Store a mapping between SIP registrations and any push
notification configuration parameters included on the REGISTER
requests.
2. Send push notifications for inbound dialog creating, or out of
dialog, SIP requests to such registrations and delay the request
until the device has re-registered through the PNG.
Additionally the PNG MAY use the PNS to ensure reliability of
reREGISTERs for SIP registrations it has a stored push notification
mapping for.
6.1. Configuration
The PNG MUST be configured with a method of contacting push
notification servers for each push notification server type supported
by the PNG. The exact method for contacting these services is
expected to vary between the service implementations. The PNG MAY be
configured such that it rejects REGISTER requests based on either
support or lack of support for a particular push notification
service. Alternatively the PNG MAY choose to ignore services it does
not recognise or does not support. The PNG MAY base decisions on
whether a push notification service is required or not based on other
information in the REGISTER, e.g. User-Agent value.
6.2. UA Registration
When the SIP UA registers with the network it will include
information relating to the push notification service as parameters
on the Contact header. The PNG MUST save off this information in
association with the SIP registration. The PNG MAY pass this
information on to the SIP registrar function in the network or MAY
remove it. If a UA attempts to register with an unacceptable push
Arnold Expires May 20, 2018 [Page 7]
Internet-Draft Push Notification Gateway November 2017
notification service then the PNG MAY reject the request, if it does
so it MUST send a SIP 503 error response.
6.3. Inbound INVITE or out-of-dialog requests
On receipt of an inbound SIP INVITE or out-of-dialog request the PNG
MUST check whether the request is for a registration for which there
is valid stored push notification information. If so then the PNG
MUST do the following:
1. It MUST immediately send a 100 response for the request.
2. It MUST NOT immediately send on the inbound INVITE or out-of-
dialog request to the UA. Instead the PNG MUST store this
message. The PNG SHOULD begin a timer between 5 seconds and 30
seconds in duration.
3. It MUST attempt to contact the push notification server
configured for the type of push notification stored in
association with the UA's registration. The content and delivery
of this message will vary between push notification services. As
part of this transaction it is expected that the PNG will use the
push notification service name to decide which service to contact
and the push notification token and application id to signal
which user agent to notify. This message MAY contain an
arbitrary message body with additional instructions to the UA.
This message MUST NOT contain the SIP message that has been
stored. If the push notification server returns an error code or
cannot be contacted the PNG should send a 503 response to the SIP
request and cease processing it.
4. It MUST await a successful registration flow for a SIP UA
matching the aor on the inbound request URI. Once such a flow is
complete the PNG MUST amend the stored INVITE or out-of-dialog
request so that any SIP headers containing URI's related to the
UA use updated routing information. If the timer expires before
a successful registration flow completes the PNG SHOULD reject
the SIP request with a SIP 503 response and cease processing it.
5. The PNG MUST then send the INVITE or out-of-dialog request on to
the UA and cancel the timer.
If the PNG does not have any push notification service configuration
stored for this UA or the request is not an INVITE or out-of-dialog,
then it should pass through the request transparently.
Arnold Expires May 20, 2018 [Page 8]
Internet-Draft Push Notification Gateway November 2017
6.4. Prompting UA registration
The PNG MAY choose to send a push notification even if there is no
INVITE or out-of-dialog request outstanding. This mechanism can be
used to ensure that a SIP UA remains registered to the network.
7. Grammar
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-svc / pn-app-id / pn-token
pn-svc = "pn-svc" EQUAL pvalue
pn-app-id = "pn-app-id" EQUAL pvalue
pn-token = "pn-token" EQUAL pvalue
8. Security Considerations
Security of messages sent through the PNS is subject to the
implementation of the PNS and is therefore beyond the scope of this
document.
9. IANA Considerations
This specification defines new SIP Contact header parameters that
extend those defined in [RFC3968]
9.1. pn-svc
Header Field: Contact
Parameter Name: pn-svc
Predefined Values: No
9.2. pn-app-id
Header Field: Contact
Parameter Name: pn-app-id
Predefined Values: No
Arnold Expires May 20, 2018 [Page 9]
Internet-Draft Push Notification Gateway November 2017
9.3. pn-token
Header Field: Contact
Parameter Name: pn-token
Predefined Values: No
10. 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>.
[RFC3968] Camarillo, G., "The Internet Assigned Number Authority
(IANA) Header Field Parameter Registry for the Session
Initiation Protocol (SIP)", BCP 98, RFC 3968,
DOI 10.17487/RFC3968, December 2004,
<https://www.rfc-editor.org/info/rfc3968>.
Author's Address
Michael Arnold
Metaswitch Networks
Email: Michael.Arnold@metaswitch.com
Arnold Expires May 20, 2018 [Page 10]