OASIS ebXML Messaging Services TC

 View Only
  • 1.  Groups - End-to-end CreateSequence and pulling (ebMS-lastpull-v1.doc) uploaded

    Posted 06-03-2008 21:06
    Another option for transferring the end-to-end CreateSequence to the
    ultimate receiver in case the receiver uses pulling. This option doesn't
    require dummy ebMS headers or messages.
    
     -- Mr. Sander Fieten
    
    The document named End-to-end CreateSequence and pulling 
    (ebMS-lastpull-v1.doc) has been submitted by Mr. Sander Fieten to the OASIS
    ebXML Messaging Services TC document repository.
    
    Document Description:
    This document looks at another option for transferring the end-to-end
    CreateSequence signal from the last intermediary to the ultimate receiver
    that uses pulling.
    The proposed solution does not require dummy ebMS headers or messages to be
    used. 
    
    View Document Details:
    http://www.oasis-open.org/apps/org/workgroup/ebxml-msg/document.php?document_id=28471
    
    Download Document:  
    http://www.oasis-open.org/apps/org/workgroup/ebxml-msg/download.php/28471/ebMS-lastpull-v1.doc
    
    
    PLEASE NOTE:  If the above links do not work for you, your email application
    may be breaking the link into two pieces.  You may be able to copy and paste
    the entire link address into the address field of your web browser.
    
    -OASIS Open Administration
    


  • 2.  RE: [ebxml-msg] Groups - End-to-end CreateSequence and pulling (ebMS-lastpull-v1.doc) uploaded

    Posted 06-04-2008 00:49
    Sander:
    
    Overall that seems to work. But some of the problems you are trying to
    overcome may not exist after all, see below.
    
    >[section 1.3] In the multi-hop situation the setup of the RM-sequence
    starts at the sending endpoint which 
    >pushes a CreateSequence signal into the I-Cloud. This signal will be
    transferred through 
    >the I-Cloud to the last intermediary where it is stored until the
    ultimate receiver 
    >starts pulling messages (step 1).
     
    


  • 3.  RE: [ebxml-msg] Groups - End-to-end CreateSequence and pulling (ebMS-lastpull-v1.doc) uploaded

    Posted 06-04-2008 08:01
    Hello,
    
    As for your last comment:
    
    
    
    We have been discussing a potential for MPC remapping by intermediaries. I
    could imagine that intermediaries offer dedicated MPCs for CS/CSR messages
    to each of their pulling clients. These MPCs would never be used for user
    messages and this problem would never arise.  This assumes the MPC on which
    the CS/CSR is transmitted does not have to be the MPC that subsequent user
    messages using the sequence established using these CS/CSRs will use.
    
    Pim
    
    


  • 4.  Re: [ebxml-msg] Groups - End-to-end CreateSequence and pulling (ebMS-lastpull-v1.doc) uploaded

    Posted 06-04-2008 21:35
    Jacques,

    my comments inline in red.

    On 4 jun 2008, at 02:48, Durand, Jacques R. wrote:

    Sander:

    Overall that seems to work. But some of the problems you are trying to
    overcome may not exist after all, see below.

    [section 1.3] In the multi-hop situation the setup of the RM-sequence
    starts at the sending endpoint which
    pushes a CreateSequence signal into the I-Cloud. This signal will be
    transferred through
    the I-Cloud to the last intermediary where it is stored until the
    ultimate receiver
    starts pulling messages (step 1).

    <JD> Yes. The CreateSequence signal has "routing info" piggybacked on it
    (either wsa parameters or dummy eb:Header), that includes MPC id. The
    Intermediary knows it has a "Pull contract" for this mpc.

    I agree that the sender has to set the address information on the message so that the I-Cloud can route it and knows that the message will be pulled by the receiver. I'm not sure if the mpc that will be used for pulling by the receiver is already in the address information when the message is sent and when it is if there're equal. For example the sender may not know about the pulling and thus setting no mpc or the default one even if the receiver wants to pull the message from a different mpc. This is also related to the subchannel discussion. I think the requirement here is that the intermediary can determine, based on the address information on the message whether it being pulled or not and when it is pulled on which mpc.


    When the ultimate receiver wants to pull messages it first has to
    establish a RM-sequence
    for sending the PullRequest signal. When acting according to the Core
    spec the CreateSequence
    will contain an offer to establish a RM-sequence for sending messages
    to the
    ultimate receiver (step 2).

    <JD> Reading Core V3 again, I believe that the obligation to use RM for
    PullRequest only exists for the "Reliable One-way / Pull MEP (section
    8.3.2)". But in our new multi-hop context, we have something new: this
    is still a One-way, but Pushed half-way and Pulled half way, something
    not described in the core spec. Something we could call: "One-way /
    Push-then-Pulled". For this, Core V3 does not say anything in Section
    8.3 or in appendix B.2.3: it is not your regular "One-way / Pull MEP".
    In particular, the destination of the PullRequest (from endpoint B to
    last Intermediary) is not supposed to have any RM capability. So I
    consider we are relieved from the necessity to send PullRequest
    "reliably".
    In that case, your steps #1 and #2 may not be necessary.
    In fact, the reason to use RM for PullRequest (for reliable One-way /
    Pull in Core V3) was to provide a way for the pulled side to resend the
    User Message, for each PullRequest duplicate received. This mechanism
    does not exist in our multi-hop topology: the only endpoint able to do
    resending of the (exact) same UserMessage, is the initial sender A. And
    as soon as the last intermediary has sent the UserMessage (over the
    backchannel of a PullRequest for this MPC) then if the message is lost
    there is no use for PullRequest resending: only the original sender will
    do the resending, which can then be relayed by a NEW PullRequest later
    on.

    I agree, but as you say this is different from the Pull as described and requires different behavior from the endpoints. Consequence is that when you want to use pulling in a multi-hop situation you need to have an MSH implementation that is capable of more than Core V3.
    I would however favor this solution!


    1. Will the endpoint react as expected on the denial of the offered
    sequence? I.e. will it send a PullRequest without having established a
    RM-sequence on which user message can be sent? It seems illogical it
    would do so because there is no reliability assurance for these message;

    <JD> that would indeed be a concern if the contract was of a "reliable
    One-way / Pull". A conforming endpoint should NOT proceed further if it
    cannot extablish a RM sequence for the UserMessage. But precisely I
    claim we are not doing "reliable One-way / Pull" here. So I believe your
    problem disappear if you remove Steps #1 and #2.

    Agree, but see comment above on Core V3 conformance.

    2. Is it allowed to combine a CreateSequence and Acknowledgement
    signal in one SOAP message? As both signals are for different sequences
    and in different parts of the message it seems that this is allowed;

    <JD> same as above: you seem to assume the Last Intermediary has RM
    capability: we don't have to.

    Agree.

    3. Will the endpoint push the CreateSequenceResponse to the
    I-Cloud?

    <JD> yes, and the question is where its routing data comes from. I
    believe it comes either from (a) the Pmode, or from (b) the AcksTo EPR
    that was inside the CreateSequence. I would prefer (b). As discussed at
    F2F, we can decide that AcksTo value is where all RM response signals
    (Acks, CSR...) should go to. This AcksTo contains ref parameters
    associated with the EPR, that can be all the reverse routing function
    needs.

    I think the issue of addressing the CSR is now in a separate thread.

    <JD> Another problem that I think we have to address carefully: today,
    an MSH is not supposed to respond anything to a PullRequest other than
    either (a) a UserMessage, or (b) an EBMS-0006 error. Only in case (b)
    you'd be able to piggyback an RM CS as you do in step #5. That means, if
    this MPC is used for other messages / other RM sequences, there might
    always be some UserMessage to pull and you would never be able to
    piggyback the awaiting CS. For your step #5 to work, we need to require
    a 1-to-1 mapping between MPC and RM sequence "timewise" i.e. at any
    point in time, only one RM sequence at most is active for each MPC.

    I would indeed assume such a mapping

    Jacques