Previous section.
UMA Measurement Layer Interface (MLI)
Copyright © 1997 The Open Group
Distributed UMA
This chapter defines specifications that will allow multiple
UMA implementations to interoperate in a distributed environment.
The UMA MLI interface supports the semantics of distributed data sources
and destinations. Examples include the explicit use of a remote node
name for sysid in umaCreate(), or references to
(implicitly) remote UMADS areas.
The UMA Data Services Layer (DSL) provides this distributed support
either directly or indirectly through the use of other service
providers, but in any case certain DSL-to-DSL communications must be
provided to implement these distributed functions. Ensuring
interoperability between DSLs implemented by different vendors and
on different hardware architectures will require common
messages (logical protocol) and a common message transport. As the DSL
is the coordinator of distributed services for UMA, the subsequent discussion
will be focused on this functional layer.
For the purposes of this discussion, the local DSL is defined as
being a UMA Data Services Layer that co-resides with a
requesting MAP and MLI on a local host.
A remote DSL will mean a responding Data
Services Layer on a remote host that is to provide data to the
requesting MAP and MLI via the local DSL. The remote
host may or may not have MAPs executing, nor does it necessarily have
a Data Capture Layer (meaning it may be a UMADS data provider only).
The following figure illustrates the relationship:
Figure: Distributed UMA - Host/DSL Relationships
Message Transport
The default message transport for UMA is TCP/IP with a socket
interface1.
This choice is based on the need for both
efficiency and reliability in transporting UMA control and
data messages. To fulfill the requirements for connection
establishment, and in- and out-of-band message delivery, the
following ports are defined:
- uma
- The service name for a registered port used to establish
connections between local and remote Data Service
Layers. Once the connection is established, this
port is used to deliver command messages, interval
data messages, and those event data messages that
are to be sent in-band.
The constant UMA_PORT, giving the port number for the service
defined, is defined in the header file
<mli.h>.
- uma_high
- A port used to deliver status messages and event data messages that
are to be sent out-of-band. See the umaStart() call description
in a previous section for a further discussion of in-band and
out-of-band reporting.
This port is dynamically assigned and is returned in
the
Connection ack
and
Reconnection ack
subclass messages defined by the logical protocol. See
Logical Message Protocol
for further details.
Logical Buffer Sizing
When establishing a connection with a remote DSL, either as a
consequence of a umaCreate() or a umaReconnect()
call, a remote DSL uses a message buffer of size
indicated by the "maximum buffer size to be used for
communications" field in the Create or Reconnect
control messages sent by the local DSL. This ensures
compatible message exchanges governed by the socket interface.
Byte Ordering
In order to ensure that a remote DSL correctly interprets
control and data messages sent by a local DSL host that has a
different byte order data architecture for integers, the UMA
message header contains indicator flags in field
mh_flags
to indicate the byte order of the host sending the message.
These indicators are interpreted thus:
-
If the indicator for the 16-bit byte order is on (a binary
1), each 16-bit component of an integer quantity has
internal byte order from low to high with increasing addresses
and its low order byte is coincident with the component
starting address (little endian). Otherwise, the component
has byte order high to low with its high order byte at the
component starting address (big endian).
-
If the indicator for the integer component order is on (a
binary 1), the 16-bit components of the integer are
ordered from low to high with increasing addresses; the start
of the low order 16-bit component is coincident with the
integer starting address. Otherwise, the 16-bit components
are ordered from high to low with the start of the high order
16-byte component coincident with the integer starting
address.
Furthermore, the default byte ordering for all integers or
integer-based quantities in the UMA message header (including
mh_flags
itself) is
network standard byte order.
This is mandatory for
the
Create
and
Reconnect
logical messages, and in these instances the
byte ordering indicators in
mh_flags
represent the local DSL's
preferred byte ordering for header content. In the
Connection Acknowledement,
the DSL server indicates the header byte order it will
use for the
Acknowledgement
and for all subsequent messages.
Lastly, UMADS data is always transported to a local DSL with
the same byte ordering as for the host on which it originated.
This means that a receiving DSL will always see the same byte
ordering regardless of the architecture of the platform that
may be acting as a data server.
Message Buffering - Normal Priority Channel
Messages sent on the normal priority channel - uma -
may be blocked with other messages in a single buffer for the purposes
of efficient transmission.
A token called a
seek number, a monotonically increasing integer, is included in the
buffer. The seek number is increased with each
umaSeek() call to reflect that a change is to take
place in the
MAP's (and the MLI's) notion of current time for the session.
The seek number is provided so that both local and remote data buffers
may be resynchronised after the repositioning. This resynchronisation
consists of discarding data buffers with lower seek numbers. The
normal priority channel buffer format is:
- UMAUint4
- Byte count of data in buffer in bytes not including this field
- UMAUint8
- Seek number
- Message 1
- Message 2
- .
- .
- Message n
Message Buffering - High Priority Channel
Status messages and out-of-band condition messages from a source DSL
are sent via the high priority channel, uma_high, and may be
blocked with other messages in a single buffer. The buffer format is as
follows:
- UMAUint4
- Byte count of data in buffer in bytes not including this field
- Message 1
- Message 2
- .
- .
- Message n
Logical Message Protocol
Messages sent from DSL to DSL include both control and
data messages. Control messages include:
-
Requests resulting from calls to an MLI to be acted on by a remote DSL
(class Command, subclass depends on MLI call, eg. subclass 'Seek')
-
Status messages from a remote DSL for the local DSL
(for example, class Connection Status)
-
Condition messages from a remote DSL to be forwarded to a local MLI/MAP
(class Condition, subclass depends on type,
for example Informational, Severe)
Data messages from a remote DSL are sent to the local DSL, and
depending on the MLI session destination, may either
be written to UMADS or private files by the local DSL or may be
forwarded to a MAP/MLI.
The general structure of UMA control and data messages has been
described in a previous section. The remainder of this section
describes
specific messages used for DSL-to-DSL communications organised by the
types defined above.
The following table summarises the relationship of MLI calls, messages
emitted by the MLI's associated DSL, and remote DSLs in a distributed
environment.
MLI Call
| Local DSL
| Remote DSL
| Notes
|
---|
| 'Command' Message
| Status/Condition/Data
|
|
---|
| Request Subclass
| Response Subclass
|
|
---|
umaClose()
| Close
| -
| -
|
umaCreate()
| Create
| Connection Ack
| Synchronous response
|
umaGetAttr()
| -
| -
| -
|
umaGetMsg()
| Request Data
| Buffer (Data,
Condition, Status)
| Request to replenish buffer
|
umaGetReason()
| -
| -
| -
|
umaReconnect()
| Reconnect
| Reconnect Ack
| Synchronous response
|
umaRelease()
| Release
| -
| -
|
umaRequestConfig()
| Request Configuration
| -
| -
|
umaSeek()
| Seek
| -
| -
|
umaSetAttr()
| Set Attribute
| -
| One message per attribute
|
umaSetThreshold()
| Set Threshold
| -
| MLI may issue prior Request Configuration
to verify class/subclass status
|
umaStart()
| Start
| -
| MLI may issue prior Request Configuration
to verify class/subclass status
|
umaStop()
| Stop
| -
| -
|
Table: MLI Calls and Resulting DSL-to-DSL Messages
Note that condition messages (class Condition,
subclasses
Informational,
Warning,
Severe
or
Fatal)
may be sent to the
MLI as a result of any of the above MLI calls. These messages may be
originated by either the remote or local DSL.
Forwarded Requests - Message Class - Command
These messages are in class Command and result from MLI requests.
The subclass depends on the specific action requested.
Message Subclass - Create
This message requests that the UMA facility create a session.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAUint4
- maximum buffer size to be used for communications.
- UMAUint4
- user id for remote authorisations.
- UMAUint4
- remote host I/P address for which data is to be reported.
- UMATextDescr
- source as specified in MLI umaCreate() call.
- UMATextDescr
- destination as specified in MLI umaCreate() call.
- UMAProp
- session properties as specified in MLI umaCreate() call.
Message Subclass - Reconnect
This message informs the UMA facility to reestablish session control to
a previously shut down session with the NOTERM property.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAUint4
- maximum buffer size to be used for communications.
- UMATextDescr
- destination as specified in MLI umaReconnect() call.
Message Subclass - Set Attribute
This message informs the UMA facility of the session attributes. One
attribute is sent per message.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMATextDescr
- attribute name. The following attribute strings are defined: "STIME", "ETIME", "INTERVAL",
"PRIO", "HISTORY_ONLY", "RECENT_ONLY", "PARTIAL".
- UMAInt4
- attribute value.
Message Subclass - Close
This is a request to shut down a session. This message is composed of a header only. The
subclass field in the header identifies the request.
- UMAHeader
- standard UMA message header.
Message Subclass - Start
This message informs the UMA facility to report data specified by the
fields in this subclass (that is, class, subclass, . . .)
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAProvider
- data provider as specified in the umaStart() MLI call.
- UMAClass
- data class as specified in the umaStart() MLI call.
- UMASubClass
- data subclass as specified in the umaStart() MLI call.
- UMASegFlags
- data segments as specified in the umaStart() MLI call. The value will
be one of UMA_BSEG, UMA_OSEG, UMA_ESEG,
UMA_ASEG representing basic, optional, vendor extension, and all,
respectively.
- UMAUint4
- length of workload definition structure or zero, if none specified.
- UMAWorkDefn
- workload definition structure as specified in the
umaStart()
call. This parameter is optional and will not be present
if the preceding sentinel length indicator is zero.
Message Subclass - Set Threshold
This message informs the UMA facility to report data specified by the
fields in this subclass (that is, class, subclass, . . .) only if the
selection expression evaluates to true.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAProvider
- data provider as specified in the umaSetThreshold() MLI call.
- UMAClass
- data class as specified in the umaSetThreshold() MLI call.
- UMASubClass
- data subclass as specified in the umaSetThreshold() MLI call.
- UMASegFlags
- data segments as specified in the umaSetThreshold() MLI call.
The value will be one of UMA_BSEG, UMA_OSEG, UMA_ESEG,
UMA_ASEG representing basic, optional, vendor extension, and all,
respectively.
- UMATextDescr
- selection expression as specified in the umaSetThreshold() MLI call.
See the description for the umaSetThreshold() MLI call for expression
syntax.
- UMATextDescr
- workload identifier as specified in the
umaSetThreshold()
call.
Message Subclass - Release
This message informs the UMA facility to begin the collection and
reporting of started
data classes and subclasses. This message is composed of a header
only. The subclass field in the header identifies the request.
- UMAHeader
- standard UMA message header.
Message Subclass - Request Data
This message informs the UMA facility that a receiving buffer is
empty and therefore able to receive more data.
- UMAHeader
- standard UMA message header
- UMAUint4
- buffer selection. The value will be one of UMA_HIGH_BUFF,
UMA_NORM_BUFF, representing high and normal buffers, respectively.
Message Subclass - Stop
This message informs the UMA facility to stop reporting data specified by the
fields in this subclass (that is, class, subclass, . . .)
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAProvider
- data provider as specified in the umaStop() MLI call.
- UMAClass
- data class as specified in the umaStop() MLI call.
- UMASubClass
- data subclass as specified in the umaStop() MLI call.
- UMASegFlags
- data segments as specified in the umaStop() MLI call. The value will
be one of UMA_BSEG, UMA_OSEG, UMA_ESEG,
UMA_ASEG representing basic, optional, vendor extension, and all,
respectively.
- UMAFlushFlags
- queue of data to flush as specified in the umaStop() MLI call. The
value will be one of UMA_HELD, UMA_RELEASED, UMA_ALLSTARTED,
to indicate whether held requests or only those released or all
started requests are to be stopped.
- UMAUint4
- length of workload definition structure or zero, if none specified.
- UMAWorkDefn
- workload definition structure as specified in the
umaStop()
call. This parameter is optional and will not be present
if the preceding sentinel length indicator is zero.
Message Subclass - Seek
This message informs the UMA facility to reposition the next reported
interval.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAWhence
- whence value: one of UMA_CTIME, UMA_LTIME, UMA_STIME or UMA_TSTAMP.
Indicates what the seek is relative to.
- UMATimeSpec
- if the
whence
is UMA_TSTAMP, this field contains an arbitrary timestamp value
which the seek is relative to.
- UMAInt4
- relative position (number of intervals of data messages) from
timestamp as specified in the umaSeek() MLI call. The value may be
zero, positive, or negative.
- UMAUint4
- port number for high priority channel (uma_high).
- UMATimeStamp
- session's current time (as known by the local DSL).
- UMAUint4
- session's last seek number (as known by the local DSL).
Message Subclass - Request Configuration
This message requests that the UMA facility return (as messages) the
configuration status of classes and subclasses specified in the fields.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAProvider
- data provider as specified in the umaRequestConfig() MLI call.
- UMAClass
- configuration data class as specified in the umaRequestConfig() MLI
call.
- UMASubClass
- configuration data subclass as specified in the umaRequestConfig() MLI
call.
- UMAUint4
- port number for high priority channel (uma_high).
Message Class - Connection Status
Message Subclass - Connection Ack
This message is a status acknowledgment for a connection request.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAStatusCode
- status code. This code identifies the general outcome of the
connection request.
Defined values are specified elsewhere in this document.
- UMAReasonCode
- reason code. This code provides more in depth identification for a status code.
Defined values are specified elsewhere in this document.
Message Subclass - Reconnect Ack
This message is a status acknowledgment for a reconnection request.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAStatusCode
- status code. This code identifies the general outcome of the
connection request.
Defined values are specified elsewhere in this document.
- UMAReasonCode
- reason code. This code provides more in depth identification for a status code.
Defined values are specified elsewhere in this document.
- UMATextDescr
- source.
- UMAProp
- session properties.
- UMAAttr
- session attributes.
Message Class - Condition
Message Subclass - Informational
This message provides informational status regarding a condition that
has occurred in UMA.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAInt4
- source of the condition.
- UMAInt4
- condition identifier.
- char[]
- condition description.
- UMAInt4
- type of hint1.
- UMAHint
- value of hint1.
- UMAInt4
- type of hint2.
- UMAHint
- value of hint2.
- UMAInt4
- type of hint3.
- UMAHint
- value of hint3.
Message Subclass - Warning
This message provides warning status regarding a condition that has
occurred in UMA.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAInt4
- source of the condition.
- UMAInt4
- condition identifier.
- char[]
- condition description.
- UMAInt4
- type of hint1.
- UMAHint
- value of hint1.
- UMAInt4
- type of hint2.
- UMAHint
- value of hint2.
- UMAInt4
- type of hint3.
- UMAHint
- value of hint3.
Message Subclass - Severe
This message provides status regarding a severe condition that has
occurred in UMA.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAInt4
- source of the condition.
- UMAInt4
- condition identifier.
- char[]
- condition description.
- UMAInt4
- type of hint1.
- UMAHint
- value of hint1.
- UMAInt4
- type of hint2.
- UMAHint
- value of hint2.
- UMAInt4
- type of hint3.
- UMAHint
- value of hint3.
Message Subclass - Fatal
This message provides status regarding a fatal condition that has
occurred or is imminent in UMA.
- UMAHeader
- standard UMA message header.
- UMASegDescr
- ASN.1/BER tags and lengths for the segment.
- UMAInt4
- source of the condition.
- UMAInt4
- condition identifier.
- char[]
- condition description.
- UMAInt4
- type of hint1.
- UMAHint
- value of hint1.
- UMAInt4
- type of hint2.
- UMAHint
- value of hint2.
- UMAInt4
- type of hint3.
- UMAHint
- value of hint3.
Footnotes
- 1.
- The OMG is in the process of defining message
and transport specifications for CORBA that will ensure that
different Object Request Broker (ORB) implementations will
interoperate. In future, PMWG will evaluate these specifications when
they are finalised, along with others, to determine their
applicability for UMA message transport.
Why not acquire a nicely bound hard copy?
Click here to return to the publication details or order a copy
of this publication.