Rosen Ira-IROSEN1 kirjoittaa perjantaina, 12. hein�kuuta 2002, kello 
20:10:Using the 'test_ppg' program, I have the PPG forwarding a response 
to an SI PUSH request to an SMSC. I'm trying to understand the details 
of the response forwarded by Kannel to the SMSC. I have parsed most of 
the content of the message, but there are several response bytes I've 
been unable to identify. I've used several WAP PUSH-related standards 
documents and read through some Kannel source to try and find how/where 
the bytes are packed. To be more specific, I've parsed the complete SI 
portion of the response. Does anyone have any suggestions on how I can 
determine the meaning of the values of the remaining fields? I've 
replicated some of the data below with some details removed such as 
portions of text strings such as URI-related information and other text 
strings. I've also removed portions of the IP header fields.

There are two different push protocols one between PI (push initiator) 
and PPG, called PAP, and another between PPG and phone,
called Push OTA. PAP works over HTTP, with its PDU packed as MIME 
multipart structure. Push control document is non-payload
part of PAP PDU, so it controls PPG operation,and only address is sended 
forward. What you see an OTA PDU, or, because OTA
is almost directly mapped to WSP, unconfirmed push WSP pdu. This is SMS 
payload, so structure of the message Kannel sends is:

SMS headers | SMS IEs | WSP headers | tokenized SI document
PPG set only SMS IEs (ports IE and segmentation and reassembly IE).

> The POS column is the byte number in the output (including TCP/IP 
> header information). HEX is the hex value of the output character. CHAR 
> is the character representation ('.' shows where the hex value is a 
> non-displayable character), Description is provided where I've been 
> able to identify a byte meaning.
>
> POS   HEX  CHAR    DESCRIPTION
>  71    00    .        Operation = submit_sm (1 of 4).
>  74    04    .        Operation = submit_sm (4 of 4).
>  75    00    .
>  76    00    .
>  77    00    .
>  78    00    .
>  79    00    .        Sequence (1 of 4).
>  82    03    .        Sequence (4 of 4).
>  83    00    .
>  84    01    .        Number Type (Origin) = International
>  85    01    .        Number Plan Indicator (Origin) = ISDN
>  86    37    7        Origin Phone (1 of 7).
>  93    00    .        Origin Phone Terminator
>  94    01    .        Number Type (Dest) = International
>  95    01    .        Number Plan Indicator (Dest) = ISDN
>  96    37    7        Dest Phone (1 of 7).
> 103    00    .        Dest Phone Terminator.
> 104    43    C        (0100 0011) Low 2 bits: msg mode (store/fwd); middle 
> 4 bits: Default msg type; 2 high bits: UDHI.
> 105    00    .        Protocol ID
> 106    00    .        Priority Level
> 107    00    .        mclass (?)
> 108    00    .        mwi(?)
> 109    00    .        (0000 0000) Low 2 bits (bits 0 and 1): No SMSC 
> delivery Receipt requested; Bits 2-3: Msg Type (no recipient SME ack 
> requested); Bit 4 (intermediate notification): not requested
> 110    00    .        Low bit (bit 0): Don't replace
> 111    08    .        Data coding: UCS2 (ISO/IEC-10646)
> 112    00    .        Pre-defined message
> 113    88    .        Message Length (136).

Here we have ports IE (IEI 6). PPG must specify push port for SI document

> 114    06    .        Ports IEI
> 115    05    .        Length of IE
> 116    04    .    Length of address
> 117    0b    .    Destination port hex high
> 118    84    .    Destination port hex low
> 119    23    #   Originator port hex high
> 120    f0    .     Originator port hex low

Then there is WSP part, control unit:

> 121    00    .   Push Id
> 122    06    .   WSP PDU - unconfirmed push
> 123    22    "   WSP headers length: 34
> 124    ae    .  Content-Type: application/vnd.wap.sic
> 125    96    .  Host:
> 126    64       Name of host
> 151    00    . Terminator of hostname.
> 152    af    .   X-WAP-Application-Id:
> 153    80    . any
> 154    8d    . Content-Length:
> 155    dc    .  220
> 156    b4    . Push-Flag
> 157    80    . 0

Then the tokenized SI document (Note that this *byte* code. If there is 
more
bytes to consider, this is always spelled out, for instance, terminator 
for text
strings.):

> 158    02    .        WBXML Version 1.2
> 159    05    .        SI public identifier (untokenize to SI document)
> 160    6a    j        UTF-8 charset
> 161    00    .        string table length (string table is used for 
> compression,
                             it is hardly necessary here)
> 162    45    E        si, with content
> 163    c6    .        indication with content and attributes
> 164    0d    .        href (http://www.)
> 165    03    .        Inline string follows
> 166    63    c        URL for request (1 of 7).
> 173    00    .        Terminator for URL for request.
> 174    85    .        URL Type (.com).
> 175    03    .        Inline string follows
> 176    7e    ~        Path for request (1 of 29).
> 205    00    .        Terminator for PATH for request.
> 206    07    .        Action = signal-medium.
> 207    0a    .        "Created ="
> 208    c3    .        OPAQUE data follows:
> 209    07    .        Length of data
> 210    19    .        Begin creation time (hex).
> 217    10    .        SI-expires =
> 218    c3    .        OPAQUE data follows:
> 219    04    .        Length of data
> 220    20     Begin expiration time (hex).
> 221    02    .        Continue expiration time.
> 224    01    .        End Indication attribute list.
> 225    03    .        Inline string follows
> 226    57    W        Begin text message for phone (1 of 21).
> 247    00    .        Terminator for text message for phone.
> 248    01    .        End Indication Element
> 249    01    .        End SI Document.
>
>
>
>
> Since I was able to identify all the fields in the SI document, I 
> thought the unidentified fields would relate to the push control 
> document, but I've been unable to make these connections using WAP 
> standards documents and Kannel source/headers, primarily in the gw and 
> gwlib directories. I think byte numbers 116 through 125 and 152 through 
> 157 will contain the most important information. In particular, I 
> wonder if these positions represent the values in the 
> "quality-of-service" portion of the Push Control Document. The SI and 
> Push Control documents I've used are provided below:

Quality of service is used for controlling PPG, it is, telling it to use
confirmed or unconfirmed push and a specific bearer for sending
the push.

Aarno


Reply via email to