OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-msg message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: multi-hop / routing: current state of discussions


Here is my recollection of what are the options on the table, and some requirements on which there seems to be consensus so far.
Any more addition or update?
 
-Jacques
 
 
General assumptions:
------------------------------
 
A1: intermediaries must (or "should"?) be "transparent", not altering ebMS headers at all.
A2: end-to-end reliability case must be supported (in addition to other case where the intermediary is itself an RM / Security endpoint)
A3: the Sending MSH should not have to be aware of intermediaries (i.e. not distinguish them
from any receiving MSH, message content-wise). At most, some P-mode options might be ruled out.
 
1. Topology Requirements
----------------------------------------
 
Different topologies that must be supported:
 
T1: single intermediary (2 hops), gateway mode serving back-office message handlers.
Typically in the DMZ, and likely to be itself a reliability/security endpoint.
 
T2: single intermediary, a hub serving as a switch between a community of MSHs.
Not a security or reliability endpoint.
 
T3: Interconnected Hubs (generalization of T2), each of them serving a set of local MSHs.
An end-to-end path may involve several hubs. Endpoints may have specific constraints
that the hubs do not have, e.g. they may only pull from their hub, messages that have been
pushed to this hub.
 
2. Traffic Patterns Requirements
----------------------------------------------
 
Different flow patterns that must be supported:
 
P1: The "unidirectional intermediary":
Case where an Intermediary sits in the DMZ, only channeling the incoming
traffic, for security reasons. All outgoing requests are not required to use the intermediary,
and can directly address their destination (or another intermediary).
 
P2: The "bi-directional intermediary":
Cases where all requests and responses to/from a particular ultimate destination,
need use the same intermediary.
 
3. Connection Management Requirements
------------------------------------------------------------
 
C1: Synchronous paths:
All intermediaries keep their connections open for a request path, and responses
tht the ultimate receiver is sending synchronously, are carried over the back-channels
all the way (possibly, piggybacked with some ebMS Error-warning from intermediaries,
or with RM acks or other signals, if an intermediary is itself a QoS endpoint).
 
C2: Asynchronous paths:
At every step, the intermediary closes the connection, returning HTTP status, possibly
an ebMS error if the processing of the request fails, and possibly other signals in case
the intermediary is itself a reliability/security endpoint.
For any synchronous response received, the last intermediary has to either (a) send it in a callback
mode e.g. over a new HTTP request, (b) reuse another back-channel available from its
predecessor (e.g. offered by a PullRequest).
 
Routing techniques: (to be discussed)
----------------------------
 
R1. Fully static routing:
In that case, the intermediary is wired to always forward everything
to the same destination, no matter what the origin is. No routing function required.
 
R2. URL-based routing:
In that case, the routing is determined only based on URL content, e.g. on which port(s)
the intermediary receives.
 
R3. Message-controlled routing:
In that case the routing is entirely determined by message content (e.g. ebMS header or
wsa header). These header elements would contain the next MSH URL (e.g. as in WS-Routing,
or can be achieved for 2-hops e.g. using wsa:To).
 
R4. Message and Table-controlled routing:
Routing is determined based on message content + routing table that associates next URL
with message content.
 
NOTE: R4 must be supported, others to be discussed.
 
 
SOAP header data involved in routing: options to be discussed
------------------------------------------------------------------------------------------
 
NOTE: here, only WS-ReliableMessaging and issues related to its use are looked at.
The use of WS-Reliability would not cause the same problems as the latter has no
standalone RM signals to care about.
 
H1. None. In that case, other techniques are used, e.g. URL-based (see R2, or R1 above).
In that case, fully synchronous paths should be used (C1 above). Or, fully async.
Such intermediaries are not ebMS intermediaries, not even SOAP intermediaries (no
intelligence of SOAP headers).
 
H2. WS-Addressing headers:
- the routing of "RM sequence lifecycle" messages (CreateSequence / CreateSequenceResponse,
CloseSequence / ClSR, TerminateSequence / TSR) must be controlled by WS-addr, especially
the response signals are controlled by wsa:ReplyTo. This is required for compliance with
the behavior expected from RMDs out there.
- wsa:ReplyTo could be given 3 types of values:
(a) the URL of ultimate recipient (RMS). That fits the traffic pattern P1 above.
(b) the URL of the intermediary. In that case, the intermediary must be told how to forward
this further back to the RMS.
(c) an "anonymous" URI. In that case, the last intermediary will receive the response signals
synchronously, and must be told how to forward back to RMS.
Issue with (c): if RMS has set "anonymous ReplyTo" it may expect to get this response
on the back-channel of the related request (and not any other backchannel).
This can't be accommodated by the "first" intermediary, unless we are in a synchronous path (C1 above).
- the routing of "forth" RM signals (the RM lifecycle requests) is TBD, can use wsa but
tis is not a critical compliance issue.
- the routing of ebMS messages could also be based on wsa headers, but the routing functions
are then llimited (based on wsa:From, wsa:To, wsa:Action, not based on any party info or
eb:Service/Action). NOTE: such intermediaries could just be SOAP intermediaries and not understand
ebMS headers. But this cause sever restrictions: combinations of Push and Pull, where a hub itself is
the target of pulling, could not be handled.
 
H3. ebMS headers:
- the routing of "RM sequence lifecycle" request messages (CreateSequence ...) could still
be controlled at ebMS level if piggybacked on an ebMS message, e.g. a dummy one with
the existing default eb:Service for testing, and a new dummy eb:Action value.
Drawback: this requires some control on the RMS implementation to be able to piggyback
its signals, and this does not remove the need to use wsa:ReplyTo.
Advantage: the routing of "forth" RM signals canbe controlled in same way as other ebMS
messages (except based on Service/Action if dummy values are needed on the piggyback message).
- the routing of ebMS messages is based on their header content (see R3 or R4 above).
NOTE: This understanding of ebMS header is necessary for advanced Intermediary functions besides
routing, like handling cases where the intermdiary itself is Pull target.
 


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]