Re: [Anima] I-D Action: draft-liu-anima-grasp-distribution-06.txt

2018-07-11 Thread Brian E Carpenter
Hi Bing,

Responses in line:

On 12/07/2018 15:58, Liubing (Leo) wrote:
> Hi Brian,
> 
> Thanks for your comments! Since this new version proposed some protocol 
> extensions, we really need review from GRASP perspective. Please see reply 
> inline.
> 
>> -Original Message-
>> From: Anima [mailto:anima-boun...@ietf.org] On Behalf Of Brian E Carpenter
>> Sent: Thursday, July 12, 2018 11:15 AM
>> To: Anima WG 
>> Subject: Re: [Anima] I-D Action: draft-liu-anima-grasp-distribution-06.txt
>>
>> Hi,
>>
>> I haven't had time to carefully read sections 1-5, but I think their general
>> message is fine. Here are some first comments on section 6, the proposed
>> GRASP extensions:
>>
>>>In fragmentary CDDL, a Un-solicited Synchronization message follows
>>>the pattern:
>>>
>>>   unsolicited_synch-message = [M_UNSOLDSYNCH, session-id,
>>> objective]
>>>
>>>A node MAY actively send a unicast Un-solicited Synchronization
>>>message with the Synchronization data, to another node. This MAY be
>>>sent to port GRASP_LISTEN_PORT at the destination address, which
>>>might be obtained by GRASP Discovery or other possible ways. The
>>>synchronization data are in the form of GRASP Option(s) for specific
>>>synchronization objective(s).
>>
>> Three comments on that:
>>
>> 1. For this to work, the receiving node must always be listening for a new 
>> TCP
>> session on that port. So that means a new API function
>> (listen_unsolicited?) and of course either a separate thread or an additional
>> entry in the event loop. Not a problem, just an implementation comment.
> 
> [Bing] I believe so, another API should be needed.
> 
>> 2. We need to specify that a new session_id is generated for each new
>> M_UNSOLDSYNCH message.
> 
> [Bing] Yes, detailed behavior will be completed in the next version.
> 
>> 3. Is this available for any synchronization objective, or do we need to add 
>> a new
>> flag bit?
> 
> [Bing] Ideally, I think the possibility should be open for any 
> Synchronization Objective. But personally I prefer to avoid revising the base 
> protocol as much as possible (e.g. changing the flag bits). How about we just 
> assume any Sync Obj could be Un-solicited, would there be any harmfulness?

I think it's fine. Effectively it just means this is a read-only objective,
whether flooded, synchronized on request, or unsolicited. The NEG flag means
it is read/write, by negotiation.
 
>>>The selective flood option encapsulates a match-condition option
>>>which represents the conditions regarding to continue or discontinue
>>>flood the current message.
>>
>> To be clear, the match is evaluated in every node, and the flooded objective 
>> is
>> dropped if there is a match? So we save on storage, not on processing.
> 
> [Bing] Yes, it's even more flexible that we can define either "something 
> matched" or "something not matched" to let the node drop the flooded messages.
> Save on storage is surely one benefit, but I think maybe the more beneficial 
> is saving on network traffic, especially in an constrained environment. And 
> also on security benefit, that some sensitive informative won't be propagated 
> too far.

Yes, you can reduce relayed (forwarded) flooding, that's true.

>  
>>> 6.5 Publishing Objective Option
>>>
>>>In fragmentary CDDL, a Publish Objective Option follows the pattern:
>>>
>>>   publish-objection-option = [PUBLISH, 2, 2, pubobj] objective-name
>>>   = PUBLISH
>>>   objective-flags = 2
>>>   loop-count = 2
>>>   pubobj = text
>>>
>>>This option MAY be included in GRASP M_Synchronization, when
>>>included, it means this message is for a publish of a specific object
>>>data.
>>
>> Can it also be included in M_UNSOLDSYNCH ? (In other words, the pub/sub bus
>> does not need to send M_REQ_SYN, but always listens for M_UNSOLDSYNCH.)
> 
> [Bing] Currently, we follow the principle that Sub/Pub should be a more 
> strict transaction model. Un-solicited Pub seems too arbitrary.
> But we can leave it as an open question, let's see if we could find some 
> scenarios that really benefited from un-solicited Pub.

In any case this would be easy to add later, if found useful.

> 
> Btw, we actually cared more about another question regarding to Sub/Pub. From 
> semantic perspective, we actually preferred to make Sub/Pub as new messages, 
> rather than current objectiv

Re: [Anima] I-D Action: draft-liu-anima-grasp-distribution-06.txt

2018-07-11 Thread Liubing (Leo)
Hi Brian,

Thanks for your comments! Since this new version proposed some protocol 
extensions, we really need review from GRASP perspective. Please see reply 
inline.

> -Original Message-
> From: Anima [mailto:anima-boun...@ietf.org] On Behalf Of Brian E Carpenter
> Sent: Thursday, July 12, 2018 11:15 AM
> To: Anima WG 
> Subject: Re: [Anima] I-D Action: draft-liu-anima-grasp-distribution-06.txt
> 
> Hi,
> 
> I haven't had time to carefully read sections 1-5, but I think their general
> message is fine. Here are some first comments on section 6, the proposed
> GRASP extensions:
> 
> >In fragmentary CDDL, a Un-solicited Synchronization message follows
> >the pattern:
> >
> >   unsolicited_synch-message = [M_UNSOLDSYNCH, session-id,
> > objective]
> >
> >A node MAY actively send a unicast Un-solicited Synchronization
> >message with the Synchronization data, to another node. This MAY be
> >sent to port GRASP_LISTEN_PORT at the destination address, which
> >might be obtained by GRASP Discovery or other possible ways. The
> >synchronization data are in the form of GRASP Option(s) for specific
> >synchronization objective(s).
> 
> Three comments on that:
> 
> 1. For this to work, the receiving node must always be listening for a new TCP
> session on that port. So that means a new API function
> (listen_unsolicited?) and of course either a separate thread or an additional
> entry in the event loop. Not a problem, just an implementation comment.

[Bing] I believe so, another API should be needed.

> 2. We need to specify that a new session_id is generated for each new
> M_UNSOLDSYNCH message.

[Bing] Yes, detailed behavior will be completed in the next version.

> 3. Is this available for any synchronization objective, or do we need to add 
> a new
> flag bit?

[Bing] Ideally, I think the possibility should be open for any Synchronization 
Objective. But personally I prefer to avoid revising the base protocol as much 
as possible (e.g. changing the flag bits). How about we just assume any Sync 
Obj could be Un-solicited, would there be any harmfulness?

> >The selective flood option encapsulates a match-condition option
> >which represents the conditions regarding to continue or discontinue
> >flood the current message.
> 
> To be clear, the match is evaluated in every node, and the flooded objective 
> is
> dropped if there is a match? So we save on storage, not on processing.

[Bing] Yes, it's even more flexible that we can define either "something 
matched" or "something not matched" to let the node drop the flooded messages.
Save on storage is surely one benefit, but I think maybe the more beneficial is 
saving on network traffic, especially in an constrained environment. And also 
on security benefit, that some sensitive informative won't be propagated too 
far.
 
> > 6.5 Publishing Objective Option
> >
> >In fragmentary CDDL, a Publish Objective Option follows the pattern:
> >
> >   publish-objection-option = [PUBLISH, 2, 2, pubobj] objective-name
> >   = PUBLISH
> >   objective-flags = 2
> >   loop-count = 2
> >   pubobj = text
> >
> >This option MAY be included in GRASP M_Synchronization, when
> >included, it means this message is for a publish of a specific object
> >data.
> 
> Can it also be included in M_UNSOLDSYNCH ? (In other words, the pub/sub bus
> does not need to send M_REQ_SYN, but always listens for M_UNSOLDSYNCH.)

[Bing] Currently, we follow the principle that Sub/Pub should be a more strict 
transaction model. Un-solicited Pub seems too arbitrary.
But we can leave it as an open question, let's see if we could find some 
scenarios that really benefited from un-solicited Pub.

Btw, we actually cared more about another question regarding to Sub/Pub. From 
semantic perspective, we actually preferred to make Sub/Pub as new messages, 
rather than current objective extension. But later we thought we should utilize 
the base protocol as much as possible, so we chose objective extension. May I 
ask your opinion on this?

Best regards,
Bing

> 
> 
> Regards
>Brian
> 
> ___
> Anima mailing list
> Anima@ietf.org
> https://www.ietf.org/mailman/listinfo/anima

___
Anima mailing list
Anima@ietf.org
https://www.ietf.org/mailman/listinfo/anima


Re: [Anima] I-D Action: draft-liu-anima-grasp-distribution-06.txt

2018-07-11 Thread Brian E Carpenter
Hi,

I haven't had time to carefully read sections 1-5, but I think their
general message is fine. Here are some first comments on section 6,
the proposed GRASP extensions:

>In fragmentary CDDL, a Un-solicited Synchronization message follows
>the pattern:
> 
>   unsolicited_synch-message = [M_UNSOLDSYNCH, session-id, objective]
> 
>A node MAY actively send a unicast Un-solicited Synchronization
>message with the Synchronization data, to another node. This MAY be
>sent to port GRASP_LISTEN_PORT at the destination address, which
>might be obtained by GRASP Discovery or other possible ways. The
>synchronization data are in the form of GRASP Option(s) for specific
>synchronization objective(s). 

Three comments on that:

1. For this to work, the receiving node must always be listening for
a new TCP session on that port. So that means a new API function
(listen_unsolicited?) and of course either a separate thread or an
additional entry in the event loop. Not a problem, just an implementation
comment.

2. We need to specify that a new session_id is generated for each new
M_UNSOLDSYNCH message.

3. Is this available for any synchronization objective, or do we need
to add a new flag bit?

>The selective flood option encapsulates a match-condition option
>which represents the conditions regarding to continue or discontinue
>flood the current message.

To be clear, the match is evaluated in every node, and the flooded objective is
dropped if there is a match? So we save on storage, not on processing.

> 6.5 Publishing Objective Option
> 
>In fragmentary CDDL, a Publish Objective Option follows the pattern:
> 
>   publish-objection-option = [PUBLISH, 2, 2, pubobj] objective-name
>   = PUBLISH
>   objective-flags = 2
>   loop-count = 2
>   pubobj = text
> 
>This option MAY be included in GRASP M_Synchronization, when
>included, it means this message is for a publish of a specific object
>data.

Can it also be included in M_UNSOLDSYNCH ? (In other words, the pub/sub bus
does not need to send M_REQ_SYN, but always listens for M_UNSOLDSYNCH.)

 

Regards
   Brian

___
Anima mailing list
Anima@ietf.org
https://www.ietf.org/mailman/listinfo/anima