ebxml-msg — archive
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
— [Date Index]
| [Thread Index]
| [Month Index]
| [List Home]
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?-JacquesGeneral 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 themfrom 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 constraintsthat the hubs do not have, e.g. they may only pull from their hub, messages that have beenpushed 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 incomingtraffic, 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 responsestht the ultimate receiver is sending synchronously, are carried over the back-channelsall 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, possiblyan ebMS error if the processing of the request fails, and possibly other signals in casethe intermediary is itself a reliability/security endpoint.For any synchronous response received, the last intermediary has to either (a) send it in a callbackmode e.g. over a new HTTP request, (b) reuse another back-channel available from itspredecessor (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 everythingto 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 orwsa 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 URLwith 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 nostandalone 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 (nointelligence 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, especiallythe response signals are controlled by wsa:ReplyTo. This is required for compliance withthe 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 forwardthis further back to the RMS.(c) an "anonymous" URI. In that case, the last intermediary will receive the response signalssynchronously, 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 responseon 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 buttis is not a critical compliance issue.- the routing of ebMS messages could also be based on wsa headers, but the routing functionsare then llimited (based on wsa:From, wsa:To, wsa:Action, not based on any party info oreb:Service/Action). NOTE: such intermediaries could just be SOAP intermediaries and not understandebMS headers. But this cause sever restrictions: combinations of Push and Pull, where a hub itself isthe target of pulling, could not be handled.H3. ebMS headers:- the routing of "RM sequence lifecycle" request messages (CreateSequence ...) could stillbe controlled at ebMS level if piggybacked on an ebMS message, e.g. a dummy one withthe 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 piggybackits 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 ebMSmessages (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 besidesrouting, like handling cases where the intermdiary itself is Pull target.
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
— [Date Index]
| [Thread Index]
| [Month Index]
| [List Home]