Push Proxy Gateway
||This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (May 2009) (Learn how and when to remove this template message)|
A Push Proxy Gateway is a component of WAP Gateways that pushes URL notifications to mobile handsets. Notifications typically include MMS, email, IM, ringtone downloads, and new device firmware notifications. Most notifications will have an audible alert to the user of the device. The notification will typically be a text string with a URL link. Note that only a notification is pushed to the device; the device must do something with the notification in order to download or view the content associated with it.
PUSH to PPG
A push message is sent as an HTTP POST to the Push Proxy Gateway. The POST will be a multipart XML document, with the first part being the PAP (Push Access Protocol) Section and the second part being either a Service Indication or a Service Loading.
+---------------------------------------------+ | HTTP POST | \ +---------------------------------------------+ | WAP | PAP XML | | PUSH +---------------------------------------------+ | Flow | Service Indication or Service Loading XML | / +---------------------------------------------+
The POST contains at a minimum the URL being posted to (this is not standard across different PPG vendors), and the content type.
An example of a PPG POST:
POST /somelocation HTTP/1.1 Host: ppg.somecarrier.com Content-Type: multipart/related; boundary=someboundarymesg; type="application/xml"
The PAP XML contains at the minimum, a <pap> element, a <push-message> element, and an <address> element.
An example of a PAP XML:
--someboundarymesg Content-Type: application/xml <?xml version="1.0"?> <!DOCTYPE pap PUBLIC "-//WAPFORUM//DTD PAP 1.0//EN" "http://www.wapforum.org/DTD/pap_1.0.dtd"> <pap> <push-message push-id="some_push_id"> <address address-value="WAPPUSH=+12065551212/TYPE=PLMN@ppg.somecarrier.com" /> </push-message> </pap>
The important parts of this PAP message are the address value and type. The value is typically a MSISDN and type indicates whether to send to an MSISDN (typical case) or to an IP Address. The TYPE is almost always MSISDN as the Push Initiator (PI) will not typically have the Mobile Station's IP address - which is generally dynamic. In the case of IP Address:
Additional capability of PAP can be found in the PAP article.
A PUSH Service Indication (SI) contains at a minimum an <si> element and a <indication> element.
An example of a Service Indication:
--someboundarymesg Content-Type: text/vnd.wap.si <?xml version="1.0"?> <!DOCTYPE si PUBLIC "-//WAPFORUM//DTD SI 1.0//EN" "http://www.wapforum.org/DTD/si.dtd"> <si> <indication si-id=345532 href="http://mmsc.somecarrier.com/CFJIOJF43F"> A new MMS has been received, download? </indication> </si>
PPG delivery to mobile station
Once a push message is received from the Push Initiator, the PPG has two avenues for delivery. If the IP address of the Mobile Station is known to the PPG, the PPG can deliver directly to the mobile station over an IP bearer. This is known as "Connection Oriented Push". If the IP address of the mobile station is not known to the PPG, the PPG will deliver over an SMS bearer. Delivery over an SMS bearer is known as "Connectionless Push".
In Connectionless Push, an SMSC BIND is required for the PPG to deliver its push message to the mobile station. Typically, a PPG will have a local SMS queuing mechanism running locally that it BINDs to, and which in turn BINDs to the carrier's SMSC. This mechanism should allow for queuing in the event of an SMS infrastructure outage, and also provide for message throttling.
Since a WAP Push message can be larger than a single SMS message can contain, the push message may be broken up into multiple SMS messages, as a multipart SMS.
Connection Oriented Push
In Connection Oriented pushes (where the device supports it), an SMSC BIND is not required if the gateway is aware of the handsets IP Address. If the gateway is unable to determine the IP Address of the handset, or is unable to connect to the device, the push notification will be encoded and sent as an SMS.
Connection Oriented Push is used less frequently than Connectionless Push for several reasons including:
- Devices while registered to the network, may not have a data session (PDP Context in the GSM world) established.
- A separate IP->MSISDN table has to be maintained in Connection Oriented Push.
- Typically, the PPG or another part of the gateway has to receive RADIUS or other accounting packets in order to support Connection Oriented Push.
Other PUSH Attributes
- Push notifications can be confirmed or unconfirmed. Most carriers use unconfirmed pushes due to the high volume and resource constraints related to confirmed push. This is controlled by setting confirmed in the quality-of-service tag element.
- Push notifications can be set to expire if not delivered before a certain time. This is controlled by setting deliver-before-timestamp in the pushmessage element.
Many other attributes exist and are detailed in the specifications at the Open Mobile Alliance and other sites.