required, the SDU is segmented and transmitted in a sequence of
segmented PDUs. If the ESRO-RESULT-PDU or ESRO-ERROR-PDU associated
with the invoke ID is not received within the
INVOKE_PDU_RETRANSMISSION_INTERVAL (see 4.6.2) period, the SDU is
retransmitted (in one PDU or segmented and transmitted in a sequence
of segment PDUs). The retransmission is repeated for a maximum of
MAX_RETRANSMISSIONS unless an ESRO-RESULT-PDU or ESRO-ERROR-PDU is
received.
If the ESRO-RESULT-PDU or ESRO-ERROR-PDU is received in a segmented
format, the reassembly process reassembles the sequence of segment
PDUs.
In the case that the Hold-on ESRO-ACK-PDU is received from the
performer, the provider stops retransmitting the ESRO-INVOKE-PDU and
waits for the ESRO- RESULT-PDU or ESRO-ERROR-PDU for a period equal
to the multiplication of INVOKE_PDU_RETRANSMISSION_INTERVAL (see
4.6.2) and MAX_RETRANSMISSIONS (see 4.6.2, for future use).
In the case that the ESRO-INVOKE-PDU is sent MAX_RETRANSMISSIONS (see
4.6.2) times and no ESRO-RESULT-PDU or ESRO-ERROR-PDU is received,
the ESROS provider sends an ESROS-FAILURE.indication primitive, with
the Invoke-ID of the failed PDU and the Failure-value as parameters,
to the invoker.
When an ESRO-RESULT-PDU or ESRO-ERROR-PDU is received (whether in one
PDU or reassembled from a sequence of segmented PDUs), the provider
issues an ESROS-RESULT.indication or ESROS-ERROR.indication to the
invoker user, sends an ESRO-ACK-PDU and initializes the inactivity
timer. In the case that duplicate ESRO- RESULT-PDU or ESRO-ERROR-PDU
____________________________________________________________________
| State |STA01 |STA02 |STA03 |STA04 |
| |CL Performer |Invoke PDU |ACK-PDU |Performer |
|Event |Start |Received |Wait |RefNu Wait |
|-----------------+-------------+-----------+----------+-----------|
|P: Invoke-PDU |(1) STA02 | | | |
|-----------------+-------------+-----------+----------+-----------|
|U: RESULT.req. | |(2) STA03 | | |
|-----------------+-------------+-----------+----------+-----------|
|P: ACK-PDU | | |(3) STA04 | |
|-----------------+-------------+-----------+----------+-----------|
|P: Invoke-PDU | |(4) STA02 |(6) STA03 |(7) STA04 |
| Duplicate | | | | |
|-----------------+-------------+-----------+----------+-----------|
|T: Result-PDU | | |(5) STA03 | |
| Retransmission | | | | |
| Timer | | | | |
|-----------------+-------------+-----------+----------+-----------|
|I: Failure | |(8) STA01 | | |
|-----------------+-------------+-----------+----------+-----------|
|T: Last Time | | |(9) STA04 | |
|-----------------+-------------+-----------+----------+-----------|
|T: RefNu Timer | | | |(10) STA01 |
|-----------------+-------------+-----------+----------+-----------|
|P: ACK-PDU | | | |(11) STA04 |
| Duplicate | | | | |
|-----------------+-------------+-----------+----------+-----------|
|U/P: Hold On ACK | |(12) STA02 | | |
____________________________________________________________________
Table 12: ESROS State Transition Diagram-Connectionless Transmission,
3-Way HS: Performer. P = Protocol, T = Timer, U = User, I = Internal.
are received, they are ignored, the inactivity timer is reset, and an
ESRO-ACK-PDU is retransmitted.
When no duplicate ESRO-RESULT-PDU or ESRO-ERROR-PDU is received for a
period equal to INACTIVITY_TIME (see 4.6.2), or in the case of ESRO-
INVOKE- PDU retransmission time-out, or in the case of internal
failure, the provider initializes the reference number timer. After
REFERENCE_NUMBER_TIME (see 4.6.2), the reference number is released.
3-Way Handshake Connectionless Transmission: Performer
For each transition number in the state diagram above, the
corresponding actions are listed below:
1. ESRO-INVOKE-PDU (as a single PDU or a sequence of segment PDUs):
o Issue ESROS-INVOKE.indication primitive.
2. ESROS-RESULT.request or ESROS-ERROR.request:
o Add invoke reference number to the active list.
o Transmit ESRO-RESULT-PDU or ESRO-ERROR-PDU (in a single PDU or
a sequence of segment PDUs).
o Set ESRO-RESULT-PDU or ESRO-ERROR-PDU retransmission timer.
3. ESRO-ACK-PDU:
o Initialize invoke reference number timer.
o Issue ESROS-RESULT.confirm or ESROS-ERROR.confirm.
4. Duplicate ESRO-INVOKE-PDU:
o No action (ignore the duplicate ESRO-INVOKE-PDU).
5. ESRO-RESULT-PDU or ESRO-ERROR-PDU retransmission timer:
o Retransmit ESRO-RESULT-PDU or ESRO-ERROR-PDU (in a single PDU
or in a segmented format) while number of retransmissions is
less than MAX_RETRANSMISSIONS.
o Increment the transmission counter.
6. Duplicate ESRO-INVOKE-PDU:
o Retransmit ESRO-RESULT-PDU or ESRO-ERROR-PDU.
o Reset ESRO-RESULT-PDU or ESRO-ERROR-PDU retransmission timer.
o Re-initialize the number of retransmissions counter to 1.
7. Duplicate ESRO-INVOKE-PDU:
o Reset invoke reference number timer.
8. Internal failure:
o Send ESRO-FAILURE-PDU.
o Release the invoke reference number.
9. Last time:
o Issue ESROS-FAILURE.indication.
o Initialize invoke reference number timer.
10. Invoke reference number timer:
o Release the invoke reference number.
11. Duplicate ESRO-ACK-PDU:
o Reset invoke reference number timer.
12. Hold-on ACK request:
o Send hold-on ESRO-ACK-PDU (for future use).
On receipt of an ESRO-INVOKE-PDU, the ESROS provider issues an
ESROS-INVOKE.indication to the ESROS performer user. The provider
ignores the duplicate ESRO-INVOKE-PDUs.
In the case of internal failure or no response from performer user,
the provider sends an ESRO-FAILURE-PDU and releases the invoke
reference number.
On receipt of a Hold-on request from the performer user, or based on
other information, provider sends a Hold-on ESRO-ACK-PDU (future
use).
On receipt of either ESROS-RESULT.request or ESROS-ERROR.request from
the ESROS performer user, the ESROS provider initiates the
retransmission timer for the ESRO-RESULT-PDU or ESRO-ERROR-PDU and
transmits the ESRO-RESULT-PDU or ESRO-ERROR-PDU in a single PDU or in
a sequence of segment PDUs. If the ESRO-ACK-PDU associated with the
Invoke-ID is not received within
RESULT_ERROR_PDU_RETRANSMISSION_INTERVAL (see 4.6.2), the PDU is
retransmitted.
When provider is waiting for ESRO-ACK-PDU and a duplicate ESRO-
INVOKE-PDU arrives, ESRO-RESULT-PDU or ESRO-ERROR-PDU is
retransmitted (in a single PDU or in a sequence of segment PDUs), the
retransmission timer is reset and counter for number of
retransmissions is re-initialized to 1.
If after MAX_TRANSMISSIONS (see 4.6.2) no ESRO-ACK-PDU is received,
the provider issues an ESROS-FAILURE.indication primitive, with the
Invoke-ID of the failed PDU and the Failure-value as parameters, to
the performer user. Then the provider sets the reference number
timer and releases the reference number after REFERENCE_NUMBER_TIME
(see 4.6.2).
On receipt of ESRO-ACK-PDU associated with the Invoke-ID before
MAX_TRANSMISSIONS (see 4.6.2), the provider issues a ESROS-
RESULT.confirm or ESROS-ERROR.confirm primitive and sets the
reference number timer and releases the reference number after
REFERENCE_NUMBER_TIME (see 4.6.2).
The duplicate ESRO-ACK-PDU and duplicate ESRO-INVOKE-PDUs are ignored
while provider waits for the reference number timer to expire.
4.3.3 2-Way Handshake Functional Unit
This Functional Unit implements the Not-Acknowledged Result model of
ESRO Services. 2-Way handshaking is used in this unit.
The RESULT.confirm and ERROR.confirm primitives on performer side are
generated based on time-out, i.e. when no duplicate ESRO-INVOKE-PDU
is received in a specified period of time, provider issues
RESULT.confirm or ERROR.confirm primitive.
The FAILURE.indication on performer side is generated as a result of
local failure or after time-out of retransmission of ESRO-RESULT-PDU
or ESRO-ERROR-PDU.
The FAILURE.indication on invoker side is generated if a local
failure happens or a ESRO-FAILURE-PDU is received.
The transmission of INVOKE, RESULT, and ERROR PDUs can be in a single
PDU (when it fits in one PDU) or a sequence of segmented PDUs.
2-Way Handshake Connectionless Transmission: Invoker
For each transition number in the state diagram above, the
corresponding actions are listed below:
1. INVOKE.request:
o Assign Invoke-ID.
o Issue ESROS-INVOKE-P.confirm primitive.
o Assign invoke reference number.
o Send ESRO-INVOKE-PDU in a single PDU or as a sequence of
segment PDUs.
o Initialize retransmission counter.
______________________________________________________________
| State |STA01 |STA02 |STA03 |
| |2-Way HS |Invoke PDU |Invoker |
| |CL Invoker |Send |RefNu Wait|
|Event |Start | | |
|-------------------------+-----------+-----------+----------|
|U: INVOKE.req. |(1) STA02 | | |
|-------------------------+-----------+-----------+----------|
|T: Invoke PDU Retransmit | |(2) STA02 | |
|-------------------------+-----------+-----------+----------|
|T: Last Timer | |(3) STA03 | |
|-------------------------+-----------+-----------+----------|
|P: Result/Error PDU | |(4) STA03 | |
|-------------------------+-----------+-----------+----------|
|P: Failure-PDU | |(5) STA03 | |
|-------------------------+-----------+-----------+----------|
|P: Duplicate Result PDU | | |(6) STA03 |
|-------------------------+-----------+-----------+----------|
|T: RefNu Timer | | |(7) STA01 |
|_________________________|___________|___________|__________|
Table 13: ESROS State Transition Diagram-Connectionless Transmission,
2-Way HS: Invoker p = Protocol, T = Timer, U = User, I = Internal.
2. Invoke PDU Retransmit:
o Retransmit ESRO-INVOKE-PDU (in a single PDU or in a sequence of
segment PDUs) while number of retransmissions is less than
MAX_RETRANSMISSIONS.
o Increment the transmission counter. When MAX_RETRANSMISSIONS
reached, start LAST_TIMER.
3. Last Timer:
o Issue ESROS-FAILURE.indication primitive.
o Initialize reference number timer.
4. ESRO-RESULT-PDU or ESRO-ERROR-PDU:
o Issue ESROS-RESULT.indication or ESROS-ERROR.indication
primitive.
o Initialize reference number timer.
5. ESRO-FAILURE-PDU:
o Issue ESROS-FAILURE.indication primitive with User not
Responding failure cause.
o Initialize reference number timer.
6. Duplicate ESRO-RESULT-PDU or ESRO-ERROR-PDU:
o Reset Invoke reference number timer.
7. Invoke reference number timer:
o Release the invoke reference number.
On receipt of an ESROS-INVOKE.request, ESROS provider generates an
Invoke- Reference-Number and an Invoke-ID (see 4.2.3). The provider
issues an ESROS-INVOKE-P.confirm primitive and passes the Invoke-ID
to the invoker.
The ESROS provider initiates the timer for the Invoke-ID and
transmits the PDU. The PDU is transmitted as a single PDU or a
sequence of segment PDUs. If the ESRO- RESULT-PDU or ESRO-ERROR-PDU
associated with the invoke ID is not received within the
INVOKE_PDU_RETRANSMISSION_INTERVAL (see 4.6.2) period, the PDU is
retransmitted. The retransmission is repeated for a maximum of
MAX_RETRANSMISSIONS unless an ESRO-RESULT-PDU or ESRO-ERROR-PDU is
received.
In the case that the ESRO-INVOKE-PDU is sent MAX_RETRANSMISSIONS (see
4.6.2) times and no ESRO-RESULT-PDU or ESRO-ERROR-PDU is received,
the ESROS provider sends an ESROS-FAILURE.indication primitive, with
the Invoke-ID of the failed PDU and the Failure-value as parameters,
to the invoker. If ESRO- FAILURE-PDU is received, the ESROS provider
sends and ESROS-FAILURE.indication primitive, with the Invoke-Id of
the failed PDU and the Failure- value as parameters to the invoker.
When an ESRO-RESULT-PDU or ESRO-ERROR-PDU is received, the provider
issues an ESROS-RESULT.indication or ESROS-ERROR.indication to the
invoker user, and initializes the Reference-Number timer. In the
case that duplicate ESRO-RESULT-PDU or ESRO-ERROR-PDU are received,
they are ignored. In the case of internal failure, the provider
initializes the reference number timer. After REFERENCE_NUMBER_TIME
(see 4.6.2), the reference number is released.
2-Way Handshake Connectionless Transmission: Performer
___________________________________________________________________
| State |STA01 |STA02 |STA03 |STA04 |
| |2-Way HS CL|Invoke PDU|Result PDU|Performer |
|Event |Performer |Received |Retransmit|RefNu Wait |
| |Start | | | |
|-------------------+-----------+----------+----------+-----------|
|P: Invoke-PDU |(1) STA02 | | | |
|-------------------+-----------+----------+----------+-----------|
|P: Invoke-PDU | |(2) STA02 |(5) STA03 |(7) STA04 |
| Duplicate | | | | |
|-------------------+-----------+----------+----------+-----------|
|U: RESULT.req. | |(3) STA03 | | |
|-------------------+-----------+----------+----------+-----------|
|I: Failure | |(4) STA01 | | |
|-------------------+-----------+----------+----------+-----------|
|T: Inactivity Timer| | |(6) STA04 | |
|-------------------+-----------+----------+----------+-----------|
|T: RefNu Timer | | | |(8) STA01 |
___________________________________________________________________
Table 14: ESROS State Transition Diagram-Connectionless Transmission,
2-Way HS: Performer. P = Protocol, T = Timer, U = User, I = Internal.
For each transition number in the state diagram above, the
corresponding actions are listed below:
1. ESRO-INVOKE-PDU (received in a single PDU or reassembled from a
sequence of segment PDUs):
o Issue ESROS-INVOKE.indication primitive.
2. Duplicate ESRO-INVOKE-PDU:
o No action (ignore the duplicate ESRO-INVOKE-PDU).
3. EROS-RESULT.request or ESROS-ERROR.request:
o Add invoke reference number to the active list.
o Transmit ESRO-RESULT-PDU or ESRO-ERROR-PDU (as a single PDU or
as a sequence of segment PDUs.)
o Set Inactivity timer.
4. Internal failure:
o Send ESRO-FAILURE-PDU.
o Release the invoke reference number.
5. Duplicate ESRO-INVOKE-PDU:
o Retransmit ESRO-RESULT-PDU or ESRO-ERROR-PDU (as a single PDU
or as a sequence of segment PDUs.)
o Set Inactivity timer.
6. Inactivity Timer:
o Issue ESROS-RESULT.confirm.
o Initialize invoke reference number timer.
7. Dplicate ESRO-INVOKE-PDU:
o Reset invoke reference number timer.
8. Invoke reference number timer:
o Release the invoke reference number.
On receipt of an ESRO-INVOKE-PDU (as a single PDU or reassembled from
a sequence of segment PDUs), the ESROS provider issues an ESROS-
INVOKE.indication to the ESROS performer user. The provider ignores
the duplicate ESRO-INVOKE-PDUs.
In the case of internal failure or no response from performer user,
the provider sends an ESRO-FAILURE-PDU and releases the invoke
reference number.
On receipt of either ESROS-RESULT.request or ESROS-ERROR.request from
the ESROS performer user, the ESROS provider initiates the inactivity
timer for the ESRO- RESULT-PDU or ESRO-ERROR-PDU and transmits the
ESRO-RESULT-PDU or ESRO-ERROR-PDU (in a single PDU or as a sequence
of segment PDUs.) If a duplicate ESRO-INVOKE-PDU associated with the
Invoke-ID is received within INACTIVITY_TIME interval (see 4.6.2),
the PDU is retransmitted.
If no duplicate ESRO-INVOKE-PDU is received within the
INACTIVITY_TIME interval (see 4.6.2), provider issues a ESROS-
RESULT.confirm or ESROS-ERROR.confirm primitive and sets the
reference number timer and releases the reference number after
REFERENCE_NUMBER_TIME (see 4.6.2).
The duplicate ESRO-INVOKE-PDUs are ignored while provider waits for
the reference number timer to expire.
4.3.4 Segmentation and Reassembly
Small ESRO Service Data Units (ESRO-SDUs) can benefit from the
efficiencies of connectionless feature of ESROS (See Section 4.3.1).
When an ESRO-SDU is too large to fit in a single connectionless PDU
it is segmented and reassembled. There might be similar mechanisms
in the upper layers with different levels of efficiency. When in
addition to the ESROS segmentation/reassembly, the upper layers are
capable of segmentation/reassembly services, then the ESROS user can
decide whether to use ESROS segmenting/reassembly mechanism depending
on the factors such as reliability of the underlying network.
In the case of segmentation/reassembly in ESROS layer, transmission
of operation segments is not acknowledged. This results in an
efficient transmission over a reliable underlying network. However
failure of one segment results in retransmission of all segments.
When acknowledged segments are desired, the ESROS user should
implement it using the acknowledged result service of ESROS.
The ESROS segmentation/reassembly is accommodated by:
o Use of two additional PDU codes for segmented INVOKE PDU.
o Use of one byte segmentation information, which contains
First/Other flag and segment number.
o Use of unused bits of RESULT and ERROR PDUs to identify a
segmented RESULT or ERROR PDU.
Segmentation and Assembly applies to INVOKE, RESULT, and ERROR SDUs.
The sender of the message is responsible for segmenting the ESRO-SDU
into segments that fit in CL PDUs. The segmented ESRO-SDU is sent in
a sequence of segments each carrying a segment of the SDU. The
Invoke-Reference-Number is a unique identifier that is used as the
segment identifier which relates all segments of an ESRO-SDU. In
addition to this identifier, the first segment specifies the total
number of segments (number-of-segments). Other segments have a
segment sequence number (segment- number). The receiver is
responsible for sequencing (based on segment-number) and reassembling
the entire ESRO-SDU.
Segmenting/Reassembling over the Connectionless ESRO Service
The sender maps the original ESRO-SDU into an ordered sequence of
segments. Several ESRO-SDU segment sequences can exist over the same
ESROS association, distinguished by their Invoke-Reference-Number
(used as segment identifier.)
All segments in the sequence have the same Invoke-Reference-Number
assigned by sender.
The first segment specifies the total number of segments. All
segments in the sequence except the first one shall be sequentially
numbered, starting at 1 (first segment has an implicit segment number
of 0).
Each segment is transmitted in one UDP PDU and is sent by sender.
All segments of a segmented ESRO-SDU are identified by the same
Invoke-Reference-Number. For a given operation, the receiver should
not impose any restrictions on the order of arrival of segments.
There is no requirement that any segment content be of
CLRO_SMALL_PDU_MAX_SIZE for connectionless transmission; however, no
more than CLRO_MAX_PDU_SEGMENTS segments can be derived from a single
ESRO-SDU.
The receiver reassembles a sequence of segments into a single ESRO-
SDU. An ESRO-SDU shall not be further processed unless all segments
of the ESRO-SDU are received. Failure to receive the SDU shall be
determined by the following event:
o Expiration of Reassembly Timer (see Section 4.3.4).
In the event of the above mentioned failure, the receiver shall
discard a partially assembled sequence.
The reassembly is done as described below:
o In the case of segmented Invoke ESRO-SDU, the encoding type and
operation-value fields are carried in the first segment used for
the whole operation. These three fields are ignored in the
segments other than the first one.
o In the case of segmented Result ESRO-SDU, the encoding type of
the first segment is used for all segments. The encoding type
field of segments other than the first one are ignored.
o In the case of segmented Error ESRO-SDU, the encoding type and
Error-value field of the first segment are used for all
segments. These two fields are ignored in segments other than
the first one.
Sender sends all segments of a segmented ESRO-SDU one after the
other. There is no mechanism for retransmission of a single segment.
In the case that the sender receives a failure indication for a
segment, it means that receiver has failed in reassembly process, and
the sender retransmits the whole ESRO-SDU (all segments).
Reassembly Timer
The Reassembly Timer is a local timer maintained by the receiver of
the segments that assists in performing the reassembly function.
This timer determines how long a receiver waits to receive all
segments of a segment sequence.
The Reassembly Timer shall be started on receipt of a segment with
different sequence identifier (Invoke-Reference-Number). On receipt
of all segments composing a sequence, the corresponding reassembly
timer shall be stopped.
The value of the Reassembly Timer is defined based on the network
characteristics and the number of segments. This requires that the
transmission of all segments of a single ESRO-SDU must be completed
within this time limit.
4.4 Structure and Encoding of ESROS PDUs
Five PDU types are used in the ESRO protocol which are described in
the following sections. PDU type coding is presented in Table 15.
The octets are numbered in increasing order, starting from 1. The
bits of an octet are numbered from 1 to 8, where 1 is the low-order
bit.
4.4.1 ESRO-INVOKE-PDU Format
Bit string format of the ESRO-INVOKE-PDU is represented in Table 16
and Table 17.
_______________________________________
| PDU Name |PDU Type Code |
_______________________________________
| ESRO-INVOKE |0 |
| ESRO-RESULT |1 |
| ESRO-ERROR |2 |
| ESRO-ACK |3 |
| ESRO-FAILURE |4 |
| ESRO-SEGMENTED-INVOKE |5 |
_______________________________________
Table 15: PDU Coding
__________________________________________________________
|Bit |8 | 7 |6 |5 |4 |3 |2 |1 |
|----------+--+------------------------+--+--+--+--+--+--|
|Octet 1 | Performer SAP |0 |0 |0 |0 |
|----------+--+------------------------+--+--+--+--+--+--|
|Octet 2 | Invoke Reference Number |
|----------+--+------------------------+--+--+--+--+--+--|
|Octet 3 |Parameter Encoding Type |Operation Value |
|----------+--+------------------------+--+--+--+--+--+--|
|Octet 4 | |
| ... | Operation Information |
|Octet N | |
|__________|_____________________________________________|
Table 16: ESRO-INVOKE-PDU format. ESRO-INVOKE-PDU Type Code =
0. Note: Invoker SAP = Performer SAP - 1.
_______________________
| Value | Meaning |
|_______|______________|
| 0 | BER [5] |
|_______|______________|
| 1 | PER [4] |
|_______|______________|
| 2 | XDR [8] |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 17: Parameter Encoding Type for ESRO-INVOKE-PDU
---------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-----------|-----|-----|-----|-----|-----|-----|
| | Parameter | | | | | | |
| | Encoding | | | | | | |
|Octet 1 | Type | 0 | 0 | 0 | 0 | 0 | 1 |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|--------|-----------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-----------------------------------------------|
|Octet 3 | |
|... | Result-parameter |
|Octet N | |
---------------------------------------------------------
ESRO-RESULT-PDU Type Code = 1.
Table 18: ESRO-RESULT-PDU format
_______________________
| Value | Meaning |
|_______|______________|
| 0 | Basic |
|_______|______________|
| 1 | Packed |
|_______|______________|
| 2 | XDR |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 19: Parameter Encoding Type for ESRO-RESULT-PDU
4.4.2 ESRO-RESULT-PDU Format
Bit string format of the ESRO-RESULT-PDU is represented in Table 18
and Table 19.
4.4.3 ESRO-ERROR-PDU Format
Bit string format of the ESRO-ERROR-PDU is represented in Table 20
and Table 21.
---------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-----------|-----|-----|-----|-----|-----|-----|
| | Parameter | | | | | | |
| | Encoding | | | | | | |
|Octet 1 | Type | 0 | 0 | 0 | 0 | 1 | 0 |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|--------|-----------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-----------------------------------------------|
|Octet 3 | Error Value |
|--------|-----------------------------------------------|
|Octet 4 | |
|... | Error parameter |
|Octet N | |
---------------------------------------------------------
ESRO-ERROR-PDU Type Code = 2.
Table 20: ESRO-ERROR-PDU format
_______________________
| Value | Meaning |
|_______|______________|
| 0 | Basic |
|_______|______________|
| 1 | Packed |
|_______|______________|
| 2 | XDR |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 21: Parameter Encoding Type for ESRO-ERROR-PDU
---------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-----------------------|-----|-----|-----|-----|
| | ESRO-ACK-PDU Type | | | | |
|Octet 1 | | 0 | 0 | 1 | 1 |
|--------|-----------------------------------------------|
|Octet 2 | Invoke Reference Number |
---------------------------------------------------------
ESRO-ACK-PDU Type Code = 3.
Table 22: Fields of ESRO-ACK-PDU
_____________________________________________
| ESRO-ACK-PDU Type | Meaning |
|___________________|________________________|
| 0 |Complete 3-way handshake|
|___________________|________________________|
| 1 | Hold on |
|___________________|________________________|
Table 23: Encoding of ESRO-ACK-PDU Type
4.4.4 ESRO-ACK-PDU Format
Bit string format of the ESRO-ACK-PDU is represented in Table 22 and
Table 23.
4.4.5 ESRO-FAILURE-PDU Format
Bit string format of the ESROS-FAILURE-PDU is represented in Table 24
and Table 25.
The first nibble of the first octet of ESRO-FAILURE-PDU shall be set
to zero.
4.4.6 ESRO-INVOKE-SEGMENTED-PDU Format
Bit string format of the ESRO-INVOKE-SEGMENTED-PDU is represented in
Table 25 and Table 26.
Note: Invoker SAP = Performer SAP - 1.
---------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-----------------------|-----|-----|-----|-----|
|Octet 1 | Not used | 0 | 1 | 0 | 0 |
|--------|-----------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-----------------------------------------------|
|Octet 3 | Failure Value |
----------------------------------------------------------
ESRO-FAILURE-PDU Type Code = 4.
Table 24: ESRO-FAILURE-PDU format
________________________________________
| Failure Value | Meaning |
|_______________|_______________________|
| 0 |Transmission failure |
|_______________|_______________________|
| 1 |Out of local resources |
|_______________|_______________________|
| 2 | User not responding |
|_______________|_______________________|
| 3 |Out of remote resources|
|_______________|_______________________|
Table 25: Encoding of failure value
-----------------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|---------------------------|------|------|------|------|
|Octet 1 | Performer Service | 0 | 1 | 0 | 1 |
| | Access Point Selector | | | | |
|--------|-------------------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-------------------------------------------------------|
| | Parameter | |
| | Encoding | |
|Octet 3 | Type | Operation Value |
| | | |
| | | |
| | | |
|--------|-------------------------------------------------------|
|Octet 4 |First/| |
| |Other | Segment Number |
|--------|-------------------------------------------------------|
|Octet 5 | |
|... | Operation Information |
|Octet N | |
----------------------------------------------------------------|
ESRO-INVOKE-PDU Type Code = 5.
Table 26: ESRO-INVOKE-SEGMENTED-PDU format
_______________________
| Value | Meaning |
|_______|______________|
| 0 | Basic |
|_______|______________|
| 1 | Packed |
|_______|______________|
| 2 | XDR |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 27: Parameter Encoding Type for ESRO-INVOKE-SEGMENTED-PDU
o For the first segment, the first/other bit is set to one, and
the segment number field contains the total number of segments.
o For segments other than the first one, the first/other bit is
set to zero, and the segment number field has the sequence
number of the segment.
The values of the three fields Performer-SAP, Parameter-Encoding-
Type, and Operation-Value of the first segment are used by performer
and these fields are ignored in the segments other than the first
one.
4.4.7 ESRO-RESULT-SEGMENTED-PDU Format
Bit string format of the ESRO-RESULT-SEGMENTED-PDU is represented in
Table 28 and Table 29.
o For the first segment, the first/other bit is set to one, and
the
segment number field contains the total number of segments.
o For segments other than the first one, the first/other bit is
set
to zero, and the segment number field has the sequence number of
the segment.
The values of the Parameter-Encoding-Type field of the first segment
is used by invoker and this field is ignored in the segments other
than the first one.
-----------------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-------------|------|------|------|------|------|------|
| | Parameter | | | | | | |
| | Encoding | | | | | | |
|Octet 1 | Type | 0 | 1 | 0 | 0 | 0 | 1 |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|--------|-------------------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-------------------------------------------------------|
|Octet 4 |First/| |
| |Other | Segment Number |
|--------|-------------------------------------------------------|
|Octet 5 | |
|... | Result Parameter |
|Octet N | |
----------------------------------------------------------------|
ESRO-RESULT-SEGMENTED-PDU Type Code = 1.
Table 28: ESRO-RESULT-SEGMENTED-PDU format
_______________________
| Value | Meaning |
|_______|______________|
| 0 | Basic |
|_______|______________|
| 1 | Packed |
|_______|______________|
| 2 | XDR |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 29: Parameter Encoding Type for ESRO-RESULT-SEGMENTED-PDU
-----------------------------------------------------------------
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|-------------|------|------|------|------|------|------|
| | Parameter | | | | | | |
| | Encoding | | | | | | |
|Octet 1 | Type | 0 | 1 | 0 | 0 | 1 | 0 |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|--------|-------------------------------------------------------|
|Octet 2 | Invoke Reference Number |
|--------|-------------------------------------------------------|
|Octet 3 |First/| |
| |Other | Segment Number |
|--------|-------------------------------------------------------|
|Octet 4 | Error Value |
|--------|-------------------------------------------------------|
|Octet 5 | |
|... | Error Parameter |
|Octet N | |
----------------------------------------------------------------|
ESRO-ERROR-SEGMENTED-PDU Type Code = 2.
Table 30: ESRO-ERROR-SEGMENTED-PDU
4.4.8 ESRO-ERROR-SEGMENTED-PDU Format
Bit string format of the ESRO-ERROR-PDU is represented in Table 30
and Table 31.
o For the first segment, the first/other bit is set to one, and
the segment number field contains the total number of segments.
o For segments other than the first one, the first/other bit is
set to zero, and the segment number field has the sequence
number of the segment.
The values of the Parameter-Encoding-Type field of the first segment
is used by invoker and this field is ignored in the segments other
than the first one.
4.5 Concatenation and Separation
The procedure for concatenation and separation conveys multiple
ESRO-PDUs in one TSDU. This is accomplished by ESRO-CONCATENATED-PDU.
_______________________
| Value | Meaning |
|_______|______________|
| 0 | Basic |
|_______|______________|
| 1 | Packed |
|_______|______________|
| 2 | XDR |
|_______|______________|
| 3 | Reserved |
|_______|______________|
Table 31: Parameter Encoding Type for ESRO-SEGMENTED-ERROR-PDU
An ESRO-CONCATENATED-PDU can contain one or more of the following
PDUs: INVOKE, RESULT, ERROR, FAILURE, and ACK.
The ESRO-PDUs within a concatenated set may be distinguished by means
of the length indicator. A one byte length indicator comes before
each ESRO-PDU.
The number of ESRO-PDUs in an ESRO-CONCATENATED-PDU is bounded by the
maximum length of TSDU.
4.5.1 Procedures
Concatenation
The ESROS provider concatenates PDUs as follows:
o PDU type code 8 is used.
o The length indicator which is the total length of first ESRO-PDU
(header and data) in octets is placed after PDU type code in
length indicator field of ESRO- CONCATENATED-PDU (see Section
4.5.2).
o The first PDU (header and data) is placed after the length
indicator field and in the ESRO-PDU field of ESRO-CONCATENATED-
PDU (see Section 4.5.2).
o For any additional ESRO-PDU, the length indicator and PDUs are
concatenated.
Separation
When the ESRO service provider receives a PDU with PDU type code 8,
it separates the concatenated PDUs as described below:
o Length indicator field coming after type code field (see
Section 4.5.2) specifies the total length of the first PDU in
octets.
o The first PDU is in the ESRO-PDU field after the length
indicator
field (see Section 4.5.2).
o Any additional PDU has its length indicator field specifying the
total length of PDU, followed by PDU itself (see Section 4.5.2).
o PDUs are separated until the end of the ESRO-CONCATENATED-PDU is
reached.
4.5.2 ESRO-CONCATENATED-PDU format
Bit string format of the ESRO-CONCATENATED-PDU containing multiple
concatenated ESRO-PDUs is represented in Table 32.
Length Indicator field
This field is contained in one octet and comes before each ESROS-PDU
in the concatenated PDU. The length indicated is total length of the
ESRO-PDU (including header and data) coming after it in octets.
ESRO-PDU field
This field contains an ESRO-INVOKE-PDU, ESRO-RESULT-PDU, ESRO-ERROR-
PDU, ESRO-FAILURE-PDU, or ESRO-ACK-PDU.
The length of this field is specified by the length indicator field
coming before it.
4.6 ES Remote Operations Protocol Parameters
4.6.1 PDU size
o CLRO_SMALL_PDU_MAX_SIZE:
________________________________________________________________
|Bit | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|--------|---------------------------|------|------|------|------|
|Octet 1 | Not used | 1 | 0 | 0 | 0 |
|--------|-------------------------------------------------------|
|Octet 2 | Length Indicator |
|--------|-------------------------------------------------------|
|Octet 3 | |
|... | ESRO-PDU |
|Octet N | |
|--------|-------------------------------------------------------|
|Octet | |
| N+1 | Length Indicator |
|--------|-------------------------------------------------------|
|Octet | |
| N+2 | ESRO-PDU |
| ... | |
|--------|-------------------------------------------------------|
| ... | ... |
|________|_______________________________________________________|
ESRO-CONCATENATED-PDU Type Code = 8.
Table 32: ESRO-CONCATENATED-PDU format
The value of this parameter should be chosen based on the
specifics of the subnetwork in use. For example, in CDPD the
maximum size of SN-Userdata size can be up to 2048 bytes (see
part 404-2.b of CDPD Specification V1.1). Based on this value
and IP and UDP protocol information fields, the value of
CLRO_SMALL_PDU_MAX_SIZE may be determined for CDPD. Again based
on the specifics of the subnetwork, the optimum value of
CLRO_SMALL_PDU_MAX_SIZE may best be determined based on field
experience and may be smaller than the maximum size that the
subnetwork supports.
o CLRO_SEGMENTED_PDU_MAX_SIZE
The value of this parameter should be chosen based on the
specifics of the subnetwork in use. The optimum value of
CLRO_SEGMENTED_PDU_MAX_SIZE may best be determined based on
field experience.
o CLRO_MAX_PDU_SEGMENTS
The value of this parameter should be chosen based on the
specifics of the subnetwork in use. The optimum value of
CLRO_MAX_PDU_SEGMENTS may best be determined based on field
experience. In any case, this value should be smaller than 127.
4.6.2 Timers
o INVOKE_PDU_RETRANSMISSION_INTERVAL:
The INVOKE_PDU retransmission interval should be specified and
optimized based on the characteristics of the network in use.
o RESULT_ERROR_PDU_RETRANSMISSION_INTERVAL:
The RESULT and ERROR-PDU retransmission interval should be
specified and optimized based on the characteristics of the
network in use.
o MAX_RETRANSMISSIONS:
The maximum number of retransmissions should be specified and
optimized based on the characteristics of the network in use.
o INACTIVITY_TIME:
The minimum waiting time during which no duplicate PDU is
received should be specified and optimized based on the
characteristics of the network in use.
o REFERENCE_NUMBER_TIME: The reference number lifetime timer
should be specified and optimized based on the characteristics
of the network in use.
4.6.3 Use of lower layers
ESRO protocol uses UDP port number 259.
5 ACKNOWLEDGMENTS
Development of this specification was funded by AT&T Wireless
Services (AWS). This protocol specification has been derived from
AT&T Wireless Services' document titled: "Limited Size Remote
Operation Services (LSROS)", Revision 0.8, dated April 20, 1995.
This specification is technically consistent with CDPD Forum's
Implementor's Guidelines Part 1028, Release 1.03, June 21, 1996.
6 SECURITY CONSIDERATIONS
ESROS has no authentication mechanism. Authentication is the
responsibility of the performer (which is outside of the scope of
ESROS) and the performer is not expected to honor the invoker when it
is not authenticated.
7 AUTHORS' ADDRESSES
Mohsen Banan
Neda Communications, Inc.
17005 SE 31st Place
Bellevue, WA 98008
EMail: mohsen@neda.com
Mark S. Taylor
Director of Strategic Engineering
AT&T Wireless Services
Wireless Data Division
10230 NE Points Drive
Kirkland, WA 98033-7869 USA
EMail: mark.taylor@airdata.com
Jia-bing Cheng
AT&T Wireless Services
Wireless Data Division
10230 NE Points Drive
Kirkland, WA 98033-7869 USA
EMail: jcheng@airdata.com
References
[1] Remote Operations: Model, Notation and Service Definition, March
1988. Recommendation X.219.
[2] Remote Operations: Protocol Specification, March 1988.
Recommendation X.229.
[3] Specification of Abstract Syntax Notation One, 1988.
Recommendation X.208.
[4] Information Processing --- Open Systems
Interconnection --- Specification of Packed Encoding Rules for
Abstract Syntax Notation One (ASN.1). International Standard
8825-2.
[5] Information Processing --- Open Systems
Interconnection --- Specification of Basic Encoding Rules for
Abstract Syntax Notation One (ASN.1), 1987. International
Standard 8825.
[6] Srinivasan, R., "Binding protocols for onc rpc version 2".
RFC1833, Sun Microsystems Inc, August 1995.
[7] Srinivasan, R., "Rpc: Remote procedure call protocol
specification version 2". RFC1831, Sun Microsystems Inc, August
1995.
[8] Srinivasan, R., "Xdr: External data representation standard".
RFC1832, Sun Microsystems Inc, August 1995.