Re: [Forces-protocol] RE: draft-ietf-forces-protocol-01-0.txt

"Wang,Weiming" <wmwang@mail.hzic.edu.cn> Sat, 23 October 2004 07:26 UTC

Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id DAA05034 for <forces-protocol-web-archive@ietf.org>; Sat, 23 Oct 2004 03:26:36 -0400 (EDT)
Received: from megatron.ietf.org ([132.151.6.71]) by ietf-mx.ietf.org with esmtp (Exim 4.33) id 1CLGVP-00083O-PJ for forces-protocol-web-archive@ietf.org; Sat, 23 Oct 2004 03:40:04 -0400
Received: from localhost.localdomain ([127.0.0.1] helo=megatron.ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1CLGEi-0007Ox-I5; Sat, 23 Oct 2004 03:22:51 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1CLG6P-0004ca-GV for forces-protocol@megatron.ietf.org; Sat, 23 Oct 2004 03:14:14 -0400
Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id DAA04346 for <forces-protocol@ietf.org>; Sat, 23 Oct 2004 03:14:10 -0400 (EDT)
Received: from [202.96.99.56] (helo=202.96.99.56) by ietf-mx.ietf.org with smtp (Exim 4.33) id 1CLGGH-0007lR-Ew for forces-protocol@ietf.org; Sat, 23 Oct 2004 03:27:38 -0400
Received: from [202.96.99.59] by 202.96.99.56 with StormMail ESMTP id 99432.341813895; Sat, 23 Oct 2004 15:28:58 +0800 (CST)
Received: from WWM (unverified [202.96.99.60]) by mail.gsu.cn (Rockliffe SMTPRA 6.0.11) with ESMTP id <B0000086259@mail.gsu.cn>; Sat, 23 Oct 2004 15:05:06 +0800
Message-ID: <115301c4b8ce$eaae4600$845c21d2@Necom.hzic.edu.cn>
From: "Wang,Weiming" <wmwang@mail.hzic.edu.cn>
To: Robert Haas <rha@zurich.ibm.com>
References: <468F3FDA28AA87429AD807992E22D07E02579209@orsmsx408><420441FF-23F7-11D9-9DB1-000393CC2112@acm.org><108701c4b84a$8028ba60$845c21d2@Necom.hzic.edu.cn> <4179571E.2080400@zurich.ibm.com>
Subject: Re: [Forces-protocol] RE: draft-ietf-forces-protocol-01-0.txt
Date: Sat, 23 Oct 2004 15:07:11 +0800
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
X-Spam-Score: 3.7 (+++)
X-Scan-Signature: f07f95bec527e0e7fb026594d783cab5
Cc: "Khosravi, Hormuzd M" <hormuzd.m.khosravi@intel.com>, ram.gopal@nokia.com, avri@acm.org, forces-protocol@ietf.org, Jamal Hadi Salim <hadi@znyx.com>, Ligang Dong <donglg@mail.hzic.edu.cn>
X-BeenThere: forces-protocol@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: forces-protocol <forces-protocol.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/forces-protocol>, <mailto:forces-protocol-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/forces-protocol>
List-Post: <mailto:forces-protocol@ietf.org>
List-Help: <mailto:forces-protocol-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/forces-protocol>, <mailto:forces-protocol-request@ietf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1618796184=="
Sender: forces-protocol-bounces@ietf.org
Errors-To: forces-protocol-bounces@ietf.org
X-Spam-Score: 3.7 (+++)
X-Scan-Signature: dfc1655f2189092f4fafe696b2c0f089

Hi Robert,

see reply in line. 
thank you.
weiming
  ----- Original Message ----- 
  From: Robert Haas 
  To: Wang,Weiming 
  Cc: Khosravi, Hormuzd M ; ram.gopal@nokia.com ; avri@acm.org ; forces-protocol@ietf.org ; Jamal Hadi Salim ; Ligang Dong 
  Sent: Saturday, October 23, 2004 2:53 AM
  Subject: Re: [Forces-protocol] RE: draft-ietf-forces-protocol-01-0.txt


  Weiming,
  I have a few suggestions for your sections. See inline. Please review them and indicate to Avri if she should incorporate these into the final draft. It would be good if Avri could do the english-check on these sections to as I am not a native english speaker neither
  Regards,
  -Robert

 <?xml version="1.0" encoding="UTF-8"?>
<!-- edited with <OXygen/>XML editor 4.1, by Weiming Wang & Ligang Dong 
     *** RedirectMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
     *** RedirectMsgV1.1, 2004-06-18.
-->

<section anchor="RedirectMsg" title="Packet Redirect Message">

<t>Packet redirect message is used to transfer data packets 
    between CE and FE. Usually these data packets are IP packets, 
    though they may sometimes associated with some metadata 
    generated by other LFBs in the model, or they may 
    occasionally be other protocol packets, which usually happen 
    when CE and FE are jointly implementing some high-touch 
    operations. Packets redirected from FE to CE are the data 
    packets that come from forwarding plane, and usually are the 
    data packets that need high-touch operations in CE.
   ... or packets for which the IP destination address is the NE. [Note that I distinguish high-touch operations from endpoint protocol processing]
  [W]done.

 Packets 
    redirected from CE to FE are the data packets that are 
    generated by CE and are decided by CE to put into forwarding 
    plane in FE.</t>

  
  don't write "generated by the CE". Such packets could very well be packets that initially were redirected from an FE. Instead, just say "come from the CE".
  [W]done.

<t>By properly configuring related LFBs in FE, a packet can also 
    be mirrored to CE instead of purely redirected to CE, i.e., 
    the packet is duplicated and one is redirected to CE and the 
    other continues its way in the LFB topology. </t>

  
  Side note: we will have to define how the packet header only can be passed to the CE, and leave the payload in the FE, until the CE decides what to do with the packet.
  [W]My thought is which part of a packet will be redirected to will be decided by other LFBs than the specific redirect LFB. In this way, we leave much flexibility.

  Second side note: we need to specify why we consider that packet_redirect deserves its own message type, and not simply be treated as an event fired by the Redirect LFB that contains, as part of the event data, the packet itself. My thinking is that using a specific message type is important to let the CE distinguish promptly if the message is an FE-internal event or an external packet that was just forwarded. Something like this should be written in the intro of this section. Weiming ?
  [W] I think the most important to have a specific redirect message is for DoS prevention. I'v add some thing.
<vspace blankLines="1" />
<list style="hanging" hangIndent="17">
<t hangText = "Editorial Note: "> 
There are also discussions on how LFBs in FE model that are 
    related to packet redirect operations should be defined. Although 
    it is out of the scope of forces protocol, how to define the LFBs 
    affect the Packet Redirect Message described here. Because currently
    it is still in progress in FE model on how to define such LFBs, 
    we try to post some thoughts on this here for discussion. They 
    will be removed later along with the progress of the FE model work.
</t>
<vspace blankLines="1" />
<t hangText ="     Thought 1: ">
To define LFBs called 'RedirectSink' and 'RedirectTap' for
packet redirect.</t>
<t>An LFB in FE called 'RedirectSink' is responsible to collect 
    data packets that need to be redirected to CE. From the 
    perspective of the FE LFB topology, the 'RedirectSink' LFB 
    is an LFB with only one input port and without any output 
    port, and the input port can then be connected to any other 
    LFB in FE model by means of a datapath in the forwarding 
    plane. From the perspective of the ForCES protocol layer, 
    the 'RedirectSink' LFB will generate the Packet Redirect 
    Messages when it receives data packets from forwarding plane.
</t>
<vspace blankLines="1" />
<t>An LFB in FE called 'RedirectTap' is responsible to receive 
    data packets that are redirected from CE. From the perspective 
    of the FE LFB topology, the 'RedirectTap' LFB is an LFB with 
    only one output port and without any input port, and the 
    output port can then be connected to any other LFB in FE 
    model by means of a datapath in the forwarding plane. From 
    the perspective of ForCES protocol layer, the 'RedirectTap' 
    LFB can receive the Packet Redirect Messages from CE, and 
    un-encapsulate the data packets from the message and put 
    them to datapaths in the forwarding plane. Actually the 
    'RecirectTap' LFB acts more like a transcoder that transfers 
    the ForCES protocol messages to normal data packets in IP 
    forwarding plane. As a result, if we need to have redirected 
    packets connected to some LFB (say a Scheduler) in FE model, 
    we only need to connect the 'RedirectTap LFB to the Scheduler 
    LFB directly via a datapath as follows:
<vspace blankLines="1" />
<figure anchor="LFB_Redirect"><artwork>
                          +-----------------+       +-----------+
                          | RedirectTap LFB |------>|           |
                          +-----------------+       |           |
                                                    | Scheduler |
                              From other LFB   ---->|    LFB    |
                                                    |           |
                                                    +-----------+
</artwork></figure>
</t>
<vspace blankLines="1" />
<t>By use of several 'RedirectSink' LFBs and several 'RedirectTap' 
    LFBs that connect to several different datapaths in FE 
    forwarding plane, multiple packet redirect paths between 
    CE and FE can be constructed. </t>
<vspace blankLines="1" />
<t hangText ="     Thought 2: ">
    There might be another way a packet could be redirected:
    directly by a forwarding path, e.g., by FPGA/ASIC/NP microcode. In 
    such a case we do not need to put in a lot of smartness. Probably 
    a link layer or even network level header is enough. The receiver 
    demuxes it only based on some protocol type in the link layer or 
    network transport layer. The pros for this appraoch is it may 
    provide a fast and cost-effective path for packet redirect. The 
    cons for this is it may more or less confuses the Fp reference 
    point definition in ForCES framework. 
</t>
</list>
<vspace blankLines="1" />
<t>We describe the Packet Redirect Message data format in details 
    as follows:</t>
<list style="hanging" hangIndent="1">
<t hangText= "Message Direction:  "><vspace />
CE to FE or FE to CE
</t>


<t hangText= "Message Header:  "><vspace />
The Message Type in the header is set to 
    MessageType= 'PacketRedirect'. The ACK flags in the header 
    SHOULD be set 'NoACK', meaning no response is expected by this 
    message. If the ACK flag is set other values, the 
    meanings will be ignored.
</t>


<t hangText= "Message Body: "><vspace />
Consists of one or more TLVs, with every TLV having the 
    following data format:
</t>

  
<figure anchor="tlv_Redirect_Data">
<artwork>
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |        Type = LFBselect       |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                          LFB Class ID                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        LFB Instance ID                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                           ...                                 ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
</artwork></figure>

<t hangText= "LFB class ID: "><vspace />
There are only two possible LFB classes here, the 
    'RedirectSink' LFB or the 'RedirectTap' LFB. If the message is 
    from FE to CE, the LFB class should be 'RedirectSink'. If the 
    message is from CE to FE, the LFB class should be 'RedirectTap'.
</t>

  
  Why restrict this ? If any other LFB wants to generate a packet redirect to the CE, let him do it !
  [W]My thought is different. If some LFBs that have data redirected to CE, they just use a redirect LFB as its output. In this way, we just save
  the work to configure the LFB for redirect functions.For instance, if we need to have some classifier to redirect something, we just need to have one output
  of the classifier connected to redirct LFB, rather than to define a specific attributes in the classifier for redirect. I even can not see how such attribute can be defined. 

<t hangText= "Instance ID: "><vspace />
Instance ID for the 'RedirectSink' LFB or 'RedirectTap' LFB.
</t>


<t hangText= "Operation TLV: "><vspace />
This is a TLV describing one packet of data to be directed 
    via the specified LFB above. The order of the data number is 
    also the order the data packet arrives the redirector LFB, that 
    is, the Redirected Data #1 should arrive earlier than the 
    Redirected Data #2 in this redirector LFB. The TLV format is 
    as follows:
</t>
  
  If what you mean is sequencing the redirected packet then I think it is dangerous. Assume you use UDP to transport the redirected packets from the CE to the FE. If one is lost, then what will the FE do with the next ones ?
  [W] sequening for redirect data is important. What I mentioned here is only the sequence inside one message(one UDP ), I see sequence number in message header is in charge of sequence between UDP packets. I suppose a loss of UDP will lead to retransmission controlled by PL. If we use TCP, the TML is in charge of this.


<figure anchor="tlv_Redirected_Data"><artwork>
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = Operations (PAYLOAD)|               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Path(or Sequence Number?)              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                        Redirected Data                        ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t hangText= "Path(or Sequence Number?): "><vspace />
[Under discussion and TBD]
</t>
<t hangText= "Type: "><vspace />
[TBD]
</t>

<t hangText= "Redirected Data: "><vspace />
This field will make a detailed description of the data to 
    be redirected as well as the data itself. The encoding of the 
    description is based on the ForCES FE model if the redirector 
    LFB is defined by FE model, or based on vendor specifications 
    if the redirector LFB is defined by vendors. The description 
    will usually include the name (or the name ID) of the redirected 
    packet data (such as 'IPv4 Packet', 'IPv6 Packet'), and the 
    packet data itself. It may also include some metadata (metadata 
    name (or name ID) and its value)associated with the redirected 
    data packet.
</t>
</list>
</section>

<!-- $Log: RedirectMsg.xml,v $
<!-- Rewritten by Weiming Wang 2004/10/22
<!-- Incorparate LFBselect and Operation TLV 
<!--
<!-- Revision 1.7  2004/07/19 09:37:05  avri
<!-- Version 2 checkin
<!--
<!-- Revision 1.6  2004/06/23 05:05:34  avri
<!-- final edit for 00
<!--
<!-- Revision 1.5  2004/06/22 07:02:37  avri
<!-- remove
<!--
<!-- Revision 1.4  2004/06/22 07:01:00  avri
<!-- Team Edit from 00-7
<!--
<!-- Revision 1.2  2004-06-21 21:40:41+08  administrator
<!-- Incorparate some comments from Jamal (June 21, 2004 10:50 AM). -Weiming
<!--
<!-- Revision 1.1  2004-06-21 21:09:41+08  administrator
<!-- Revision handed from Avri. - Weiming
<!--
<!-- Revision 1.3  2004/06/19 13:11:12  avri
<!-- Linefeeds
<!--
<!-- Revision 1.2  2004/06/19 13:05:00  avri
<!-- anchors
<!--
<!-- Revision 1.1  2004/06/17 03:45:55  avri
<!-- Initial revision
<!-- 
     edited with <OXygen/>XML editor 4.1, by Weiming Wang & Ligang Dong 
     *** RedirectMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
-->
  
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with <OXygen/>XML editor 4.1, by Weiming Wang & Ligang Dong 
     *** QueryMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
     *** QueryMsgV1.1, 2004-06-18
     - change EncodingType to Type
     *** QueryMsgV1.2, 2004-10-20
     - for ietf-protocol-01
-->

<section anchor="QueryMsg" title="Query and Response Messages">
  
  Be more specific: "Query and Query Response Messages"
  [OK]

<t>The ForCES query and response messages are used for one ForCES 
    element (CE or FE) to query other ForCES element(s) for various 
    kinds of information. Current version of ForCES protocol limits 
    the use of the messages only for CE to query information of FE. 
</t>
<section anchor="Query" title="Query Message">

<t>As usual, a query message is composed of a common header and 
    a message body that consists of one or more TLV data format. 
    Detailed description of the message is as below.</t>
<list style="hanging" hangIndent="4"> <vspace />
<vspace blankLines="1" />
<t hangText= "Message transfer direction:"> <vspace />
Current version limits the query message transfer direction 
    only from CE to FE.</t>

<t hangText= "Message Header:"> <vspace />
The Message Type in the header is set to MessageType= 'Query'. 
    The ACK flag in the header SHOULD be set 'ACKAll', meaning a 
    full response for a query message is always expected. If the 
    ACK flag is set other values, the meaning of the 
    flag will then be ignored, and a full response will still be 
    returned by message receiver.</t>


<t hangText = "Message body: "><vspace />
The query message body consists of (at least) one or more than 
    one TLVs that describe entries to be queried. The TLV is called 
    LFBselect TLV and the data format is as below:
</t>
<figure anchor="msg_Query">
<artwork>
 
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |        Type = LFBselect       |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                          LFB Class ID                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        LFB Instance ID                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                           ...                                 ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
  Typo in all figures: correct "Operatioin TLV"
  [W]thanks.
  General comment: in many cases the same type in TLV is used in different PL messages (Query vs Response, etc) and then the V is different. This WILL be a big source of implementation bugs. I think we should defined operation TLVs differently: GET and GET-RESP, SET and SET-RESP, REPORT and REPORT-RESP.
  What do you think ?
  [W]I agree well. I thought of this, just thinking this Operation TLV is really a topic for much more discussion, therefore I leave it there. Anyway, let me try to change it. 

     
</artwork>
</figure>
<vspace blankLines="1" />
<list style= "hanging" hangIndent="17" >
<t hangText = "Editorial Note: ">
</t>
<list style="numbers" hangIndent="3">
<t>Under discussion is whether there is a need for explicit multiple LFB insatance
    addressing here. One way to realize it is to define a specific Instance select
    TLV to substitute above 'LFB Instance ID' field. The TLV may have following format:</t>
<figure><artwork>
        INSselectTLV := Type Length Value
        Type := INSselect
        Value := InstanceID (RangeMark | Instance ID)+

</artwork></figure>
<t>An applicable RangeMark is '0xffffffff', the value of which is the same as 
    Instance broadcast ID. Because there will be no broadcast address applied
    in this place, there will be no worry of ambiguity here.</t>
</list>   
</list>
<vspace blankLines="1" />
<t hangText= "Operation TLV"><vspace />
The Operation TLV for the 'Query' message is formatted as:
</t>
<figure anchor="tlv_Query">
<artwork>    
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = Operations (GET)    |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Path(or Attribute ID?)                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Query Data                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
  
  Again, in all your sections, could you change "Type = Operations (GET)" to "Type = GET" and so on ?
  [W]also agree well. hope Jamal will not object to it. I try to change it first.

</artwork></figure>
<t hangText= "Path(or Attribute ID?): "><vspace />
[Under discussion and TBD]
</t>

<vspace blankLines = "1" />
<list style="hanging" hangIndent="17">
<t hangText = "Editorial Note:"> 
There is a debate on whether we should use a 'Path' or simply an 'Attribute ID' 
    or a 'Table ID' here at the protocol layer. A Path is used for data 
    indexing for a table, while an 'Attribute ID' or a 'Table ID' only specify 
    which attribute or table to use, leaving table index to be included in followed 
    data.
</t>
</list>
<vspace blankLines="1" />
<t hangText= "Query Data: "><vspace />
    [Under discussion and TBD]
</t>
</list>
<t>To better understand the above PDU format, we can show a tree structure for the 
    format as below:
<figure>
main hdr (type = Query)
     |
     |
     +--- T = LFBselect
     |        |
     |        +-- LFBCLASSID = target LFB class
     |        |
     |        |
     |        +-- LFBInstance = target LFB instance 
     |        |
     |        |
     |        +-- T = operation { GET }
     |        |   |
     |        |   +--  // one or more path targets 
     |        |        // under discussion
     |        +-- T = operation { GET }
     |        |   |
     |        |   +--  // one or more path targets 
     |        | 

</figure>
</section>

<section anchor="QueryResponse" title="Query Response Message">
<t>When receiving a query message, the receiver should process the 
    message and come up with a query result. The receiver sends the 
    query result back to the message sender by use of the Query 
    Response Message. The query result can be the information 
    being queried if the query operation is successful, or can also 
    be error codes if the query operation fails, indicating the 
    reasons for the failure.</t>

<t>A query response message is also composed of a common header and 
    a message body consists of one or more TLVs describing the query 
    result. Detailed description of the message is as below.</t>
<vspace blankLines="1" />
<list style= "hanging" hangIndent="4">
<t hangText= "Message transfer direction: "><vspace />
Current version limits the query response message transfer direction 
    only from FE to CE.
</t>
    
<t hangText= "Message Header:  "><vspace />
The Message Type in the header is set to MessageType= 'QueryResponse'. 
    The ACK flag in the header SHOULD be set 'NoACK', meaning no further 
    response for a query response message is expected. If the ACK flag is 
    set other values, the meaning of the flag will then be 
    ignored. The Sequence Number in the header SHOULD keep the same as 
    that of the query message to be responded, so that the query message 
    sender can keep track of the responses. 
</t>
    
<t hangText= "Message body: "><vspace />
The message body for a query response message consists of (at least) 
    one or more than one TLVs that describe query results for individual 
    queried entries. The TLV is also called LFBselect TLV, and has exactly 
    the same data format as query message, except the Operation TLV inside
    the TLV comprises the 'Query Response Data', instead of the 'Query Data',
    as below:
</t>

<figure anchor="msg_Query_Response">
<artwork>
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = Operations (GET)    |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Path(or Attribute ID?)                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Query Response Data                    |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
  
  You should specify here that the order of the TLV in the Query-Reponse matches the TLVs in the Query. So there is always the same number of TLVs in the response as in the query.
  OK.
  Side note: we have not yet resolved the use of a transaction or sequence number that will be used for each PL message.


 
<t hangText= "Query Response Data: "><vspace />
[Under discussion and TBD]
</t>
</list>
    
</section>
</section>

<!-- $Log: QueryMsg.xml,v $
<!-- Rewritten by Weiming Wang 2004/10/22
<!-- Incorparate LFBselect and Operation TLV 
<!--
<!-- Revision 1.10  2004/10/20 14:49:36  avri
<!-- Changes for draft-ietf-forces-protocol-00
<!--
<!-- Revision 1.9  2004/07/19 09:37:22  avri
<!-- Version 2 checkin
<!--
<!-- Revision 1.8  2004/06/23 05:05:47  avri
<!-- final edits for 00
<!--
<!-- Revision 1.7  2004/06/22 06:54:17  avri
<!-- Remove
<!--
<!-- Revision 1.6  2004/06/22 06:52:33  avri
<!-- Incorporate WW changes
<!-- Include team edits on 00-7
<!--
<!-- Revision 1.2  2004-06-21 21:40:25+08  administrator
<!-- Incorparate some comments from Jamal (June 21, 2004 10:50 AM). -Weiming
<!--
<!-- Revision 1.1  2004-06-21 20:36:40+08  administrator
<!-- revision handed from Avri
<!--
<!-- Revision 1.5  2004/06/19 13:12:33  avri
<!-- formatting
<!--
<!-- Revision 1.4  2004/06/19 13:03:03  avri
<!-- fix cross reference
<!--
<!-- Revision 1.3  2004/06/19 12:21:11  avri
<!-- - change EncodingType to Type (from WW)
<!-- - fix formating
<!--
<!-- Revision 1.2  2004/06/17 03:43:47  avri
<!-- Replace with new WW files
<!--
    edited with <OXygen/>XML editor 4.1, by Weiming Wang &Ligang Dong 
     *** QueryMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
-->
  
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with <OXygen/>XML editor 4.1, by Weiming Wang &Ligang Dong 
     *** EventMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
     *** EventMsgV1.1, 2004-06-18:
     - change EncodingType to Type.
-->

<section anchor="EventMsg" title="Event Notification and Response Messages">

<t>The Event Notification Message is used for one ForCES element 
    to asynchronously notify one or more other ForCES elements 
    in the same ForCES NE on just happened events in it. The 
    Event Notification Response Message is used for the receiver 
    of the Event Notification Message to acknowledge the reception 
    of the event notification.</t>

<t>Events in current ForCES protocol can be categorized into following types:</t>
<t><list style="symbols">
<t>Events happened in CE</t>
<t>Events happened in FE</t>
  
  Why does this matter for the protocol ?
  [W] yes, it matters. actually I still have not defined the message format for CE events. I'm sure the definition should be different for the LFBs.
  If the CE-LFB thought can proceed more, it will help the definition here.

</list></t>

<t>Events can also be categorized into two classes according to 
    whether they need subscription or not. An event in one ForCES 
    element that needs to be subscribed will send notifications to 
    other ForCES elements only when the other elements have subscribed 
    to the element for the event notification. How to 
    subscribe/unsubscribe for an event is described in the Configure 
    Message in Section 6.3. An event that needs not to be subscribed 
    will always send notifications to other ForCES elements when the 
    event happens. An event definition made by ForCES protocol, ForCES 
    FE model, or by vendors will state if the event needs subscription or not.</t>
<vspace blankLines="1" />
<list style="hanging" hangIndent="17" >
<t hangText="Editorial Note: " >
There is an argument that it is preferable to have 
all events subscribable.
</t>
</list>


<section title="Event Notification Message">

<t>As usual, an Event Notification Message is composed of a common 
    header and a message body that consists of one or more TLV data 
    format. Detailed description of the message is as below.</t>
<list style="hanging" hangIndent="1">
<t hangText= "Message Transfer Direction:  "><vspace />
FE to CE, or CE to FE
</t>


<t hangText= "Message Header:  "><vspace />
The Message Type in the message header is set to <vspace />
    MessageType = 'EventNotification'. The ACK flag in the header 
    can be set as: ACK flag ='NoACK'|'SuccessAck'|'UnsuccessACK'|'ACKAll'. 
    Note that the 'Success' here only means the receiver of the message 
    has successfully received the message.
</t>


<t hangText= "Message Body: "><vspace />
The message body for an event notification message consists 
    of (at least) one or more than one TLVs that describe the 
    notified events. The TLV is defined as follows:
<vspace blankLines="1" />
</t>

<figure anchor="tlv_Event_Notification">
<artwork>
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |        Type = LFBselect       |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                          LFB Class ID                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        LFB Instance ID                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                           ...                                 ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Operatioin TLV                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
</artwork></figure>

<t hangText= "Operation TLV: "><vspace />
This is a TLV that describes the event to be notified, as follows:
</t>

<figure anchor="tlv_Event"><artwork>
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = Operations (REPORT) |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Path(or Event ID?)                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Event Data                         |
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t hangText= "Path(or Event ID): "><vspace />
[Under discussion and TBD]
</t>

<t hangText= "Event Data: "><vspace />
    [Under discussion and TBD]
</t>
</list>
<t>To better understand the above PDU format, we can show a tree structure for the 
    format as below:
<figure>
main hdr (type = Event Notification)
     |
     |
     +--- T = LFBselect
     |        |
     |        +-- LFBCLASSID = target LFB class
     |        |
     |        |
     |        +-- LFBInstance = target LFB instance 
     |        |
     |        |
     |        +-- T = operation { REPORT }
     |        |   |
     |        |   +--  // one or more path targets 
     |        |        // under discussion
     |        +-- T = operation { REPORT }
     |        |   |
     |        |   +--  // one or more path targets 
     |        | 

</figure>
</list>
</section>

<section title="Event Notification Response Message">

<t>After sending out an Event Notification Message, the sender may 
    be interested in ensuring that the message has been received 
    by receivers, especially when the sender thinks the event 
    notification is vital for system management. An Event 
    Notification Response Message is used for this purpose. The 
    ACK flag in the Event Notification Message header are used to 
    signal if such acknowledge is requested or not by the sender.</t> 

<t>Detailed description of the message is as below:</t>
<list style="hanging" hangIndent="1">
<t hangText= "Message Transfer Direction:  "><vspace />
>From FE to CE or from CE to FE, just inverse to the 
    direction of the Event Notification Message that it responses.
</t>


<t hangText= "Message Header:  "><vspace />
The Message Type in the header is set 
    MessageType= 'EventNotificationResponse'. The ACK flag in the 
    header SHOULD be set 'NoACK', meaning no further response for 
    the message is expected. If the ACK flag is set other values, 
    the meaning of the flag will then be ignored. 
    The Sequence Number in the header SHOULD keep the same as that 
    of the message to be responded, so that the event notificatin 
    message sender can keep track of the responses.
</t>

<t hangText= "Message Body: "><vspace />
The message body for an event notification message consists 
  
  correct above: event notification "response" message

    of (at least) one or more than one TLVs that describe the 
    notified events. The TLV is also called LFBselect TLV, and has exactly 
    the same data format as Event Notification Message, except the Operation 
    TLV inside the TLV comprises the event response data, instead of the 
    'Event Data', as below:
  
  Again, you should mention that the each "Operation TLV" in the response corresponds one-to-one to a TLV in the notification.

<vspace blankLines="1" />

<figure anchor="tlv_Repsonse_Result">
<preamble>
This contains a TLV that describe the response result 
    as below:
</preamble>
<artwork>
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = Operations (REPORT) |               Length          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Path(or Event ID?)                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Result     |   Reason      |         Code                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

</artwork></figure>
<t hangText= "Path(or Event ID?): "><vspace />
[Under discussion and TBD]
</t>
<t hangText= "Result: "><vspace />
This describes the reception result of the event notification 
    message as below:
</t>
<figure><artwork>
	Result Value             Meaning
	'Success'       The event has been successfully received.
	'Unsuccess'     The event has not been successfully received.
</artwork></figure>

<t hangText= "Reason, Code: "><vspace />
This describes the reason and possible error code when 
    the message is not successfully received. Note that only the 
    failure at the protocol layer rather than the transport layer 
    can be allocated here,
  typo: not "allocated" but "handled".

 that is, if even the header part of the 
    message to be responded can not be correctly received, the 
    response to the message will not be able to be generated by 
    the receiver.
</t>
<vspace blankLines="1" />
<list style="hanging" hangIndent="17">
<t hangText="Editorial Note: "> 
There is a debate on whether the Event Notification 
    Response Message is necessary or not. The pro for it is some event 
    notification senders may be interested in knowing if receivers 
    have had success/unsuccess receptions of the events or not. An 
    alternative to generate such response is for the protocol to 
    define a universal ACK message so that it can act as responses 
    for any types of messages as well as the event notification 
    messages, when the message senders are interested in knowing 
    whether the messages have been successfully received or not 
    (different from the responses for the message processing results).
</t> 
</list>
</list>
</section>
</section>

<!-- $Log: EventMsg.xml,v $
<!-- Rewritten by Weiming Wang 2004/10/22
<!-- Incorparate LFBselect and Operation TLV 
<!--
<!-- Revision 1.7  2004/07/19 09:38:16  avri
<!-- Version 2 checkin
<!--
<!-- Revision 1.6  2004/06/23 05:05:20  avri
<!-- final edit for 00
<!--
<!-- Revision 1.5  2004/06/22 06:59:23  avri
<!-- remove
<!--
<!-- Revision 1.4  2004/06/22 06:58:25  avri
<!-- Team edits from 00-7
<!--
<!-- Revision 1.2  2004-06-21 21:40:58+08  administrator
<!-- Incorparate some comments from Jamal (June 21, 2004 10:50 AM). -Weiming
<!--
<!-- Revision 1.1  2004-06-21 21:07:54+08  administrator
<!-- Revision handed from Avri  - Weiming
<!--
<!-- Revision 1.3  2004/06/19 13:13:30  avri
<!-- Formatting
<!--
<!-- Revision 1.2  2004/06/19 12:29:52  avri
<!-- - change EncodingType to Type. (from WW)
<!-- Fice formatting
<!--
<!-- Revision 1.1  2004/06/17 03:45:02  avri
<!-- Initial revision
<!--
     edited with <OXygen/>XML editor 4.1, by Weiming Wang &Ligang Dong
     *** EventMsg V1.0, 2004-06-13, changes since last version:
     - None, as the original version.
-->
  


-- 
Robert Haas
IBM Zurich Research Laboratory
Säumerstrasse 4
CH-8803 Rüschlikon/Switzerland
phone +41-1-724-8698  fax +41-1-724-8578  http://www.zurich.ibm.com/~rha


------------------------------------------------------------------------------


  _______________________________________________
  Forces-protocol mailing list
  Forces-protocol@ietf.org
  https://www1.ietf.org/mailman/listinfo/forces-protocol

_______________________________________________
Forces-protocol mailing list
Forces-protocol@ietf.org
https://www1.ietf.org/mailman/listinfo/forces-protocol