Re: [Netconf] Comments on draft-ietf-netconf-yang-push-18

Robert Wilton <rwilton@cisco.com> Tue, 04 September 2018 16:53 UTC

Return-Path: <rwilton@cisco.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B1C6130F63 for <netconf@ietfa.amsl.com>; Tue, 4 Sep 2018 09:53:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level:
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fcaVzg91P4ns for <netconf@ietfa.amsl.com>; Tue, 4 Sep 2018 09:53:51 -0700 (PDT)
Received: from aer-iport-2.cisco.com (aer-iport-2.cisco.com [173.38.203.52]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44A49130F52 for <netconf@ietf.org>; Tue, 4 Sep 2018 09:53:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=9618; q=dns/txt; s=iport; t=1536080031; x=1537289631; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=EXmE5bSaYsXBA5t3oGKr5myXMZ/yRXYPgcm4Hx+Ndr8=; b=Kd7cQEj81ecTk5xbl1nZhnGMhuqLWx5AKhDeLGdUDuxdVv+hVYEmjWbS mgGWq0DZ+X0RG52x2fFU/t4s8Mj8H5aco+ti5WMRgAtZSlEX0nisfd5it RTk4/QgW6/GrQEGyzuh0mVV1SxTiOEcZd4rp1mnakGGjOzhf2AWtOmDZ6 g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0B1AQC6t45b/xbLJq1aGQEBAQEBAQEBAQEBAQcBAQEBAYMfBYEPbRIog3KIcY04JXiXLwsYC4QDRgKDWDcVAQIBAQIBAQJtHAyFNwEBAQQBASEECwEFNgYFDAQLEQQBAQECAgkaAwICJx8JCAYBDAYCAQEFEoI7SwGCAQ+jLHszhGyFFoELiWSBQT+BEicMgio1gj1TCwEBAoErDhCDF4JXAod6IR+GKoxyCYkvhkQGF4FAhDeCV4YLiDyFOoVvgVciQYEUMxoIGxU7gmwJiwyFPz4wAYpjASUEgiABAQ
X-IronPort-AV: E=Sophos;i="5.53,329,1531785600"; d="scan'208";a="6331070"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-2.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Sep 2018 16:53:47 +0000
Received: from [10.63.23.158] (dhcp-ensft1-uk-vla370-10-63-23-158.cisco.com [10.63.23.158]) by aer-core-2.cisco.com (8.15.2/8.15.2) with ESMTP id w84GrjWp020444; Tue, 4 Sep 2018 16:53:46 GMT
To: "Yutianpeng (Tim)" <yutianpeng@huawei.com>, "netconf@ietf.org" <netconf@ietf.org>
References: <35FF0D51C8DAB54B95B0426331F984FF520433B2@lhreml523-mbs.china.huawei.com> <fe3b3e33-f5f8-36f2-77df-4c9fd0059d54@cisco.com> <CABCOCHRFcOciHrS3t69EueFw1QES6GAkqyb2WTNh7K4a3f-_ng@mail.gmail.com> <20180904.173343.771736120417698474.mbj@tail-f.com> <35FF0D51C8DAB54B95B0426331F984FF52045B7E@lhreml523-mbs.china.huawei.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <3855125a-3b54-3fa0-1762-dea1f45d6a75@cisco.com>
Date: Tue, 04 Sep 2018 17:53:45 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <35FF0D51C8DAB54B95B0426331F984FF52045B7E@lhreml523-mbs.china.huawei.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-Outbound-SMTP-Client: 10.63.23.158, dhcp-ensft1-uk-vla370-10-63-23-158.cisco.com
X-Outbound-Node: aer-core-2.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/5-8DZ-QbfXueoIu8O65s2hCT7Ls>
Subject: Re: [Netconf] Comments on draft-ietf-netconf-yang-push-18
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Sep 2018 16:53:54 -0000

Hi Tim,

Please see inline ...


On 04/09/2018 17:20, Yutianpeng (Tim) wrote:
> Hi,
> Thanks for reply.
> Some explanations as below, please check.
> Tim
>
> -----Original Message-----
> From: Netconf [mailto:netconf-bounces@ietf.org] On Behalf Of Martin Bjorklund
> Sent: 04 September 2018 16:34
> To: andy@yumaworks.com
> Cc: netconf@ietf.org; rwilton=40cisco.com@dmarc.ietf.org
> Subject: Re: [Netconf] Comments on draft-ietf-netconf-yang-push-18
>
> Andy Bierman <andy@yumaworks.com> wrote:
>> On Tue, Sep 4, 2018 at 8:22 AM, Robert Wilton <
>> rwilton=40cisco.com@dmarc.ietf.org> wrote:
>>
>>> Hi Tim,
>>>
>>> Please see comments (as a non author) inline ...
>>>
>>> On 29/08/2018 16:28, Yutianpeng (Tim) wrote:
>>>
>>> Hi,
>>>
>>> Some comments as below:
>>>
>>>
>>>
>>> ------------------------------
>>>
>>> There is one point missing in the draft so far I think: what if the
>>> subscriber is the initiator of the configuration changes?
>>>
>>> In this case, the subscriber is aware of configuration changes
>>> initiated by itself without relying on the push mechanism.
>>> Introducing push mechanism will dramatically impact the performance of the system in this case.
>>>
>>> My suggestion is:
>>>
>>> 3.3.  On-Change Considerations
>>>
>>>     5.  If the resulting patch record is non-empty, and it contains
>>> the records not initiated by the subscriber, select these records
>>> and send to corresponding subscriber.
>>>
>>> We can have further discussion on this to make it optional instead
>>> of mandatory.
>>>
>>> I'm not keen on this change.  This does not seem like a good
>>> separation of concerns.  Besides, I'm not convinced why this should
>>> really be a performance issue given that config changes are
>>> relatively rare compared to all the operational state in the system that may be changing.
>>>
>>>
>> +1 -- this change should not be made.
>> This is not a useful optimization.
> +1
>
> <Tim>
> I might haven't explain the main concerns on this clearly.
> When I see Yang-push, I find it very useful as it really solves problems all NMS/controllers are facing. But I do have a concern on the point I mentioned.
> Let me give an example that Yang-Push can be used:
> Before Yang-push:
> NMS is using Netconf yang to manage a router
> NMS is using polling mechanism to sync config
> Anyone make changes not through NMS, e.g. CLI, NMS is not aware of the change in time.
>
> After Yang-push:
> NMS is using Netconf yang to manage a router
> NMS is using Yang-push mechanism to sync configuration. In order to make sure all database in sync state, <running> database is subscribed  --- I believe this could be a widely use case
> In case anyone make changes not through the NMS, changes will be notified to NMS via push mechanism.
> With yang push solution, it solves restriction of polling mechanism pretty well.
> But as I explained, yang push mechanism has an obvious drawback, each configuration from NMS will have a push message back to NMS, which is not needed in many use scenarios. This behavior actually impact performance a lot.
> If this msg can be filtered directly without going through all Netconf +SSH/TLS + TCP process, the performance of the subscriber will improve a lot I believe.
> Based on my understanding yang-push is to solve polling latency, but it should not have significant performance impact on existing applications. If NMS configure a device with 1000 changes and the device push 1000 changes back to NMS, I don't think this is an elegant implementation when Netconf has already provide enough transaction mechanism itself. The impact of push mechanism is it impact performance of 99% of scenario (normal NMS->device configure process) to solve 1% of use case (configuration not sync in time).
> I understand the difficulty of introducing big changes at this stage, but I really wish we can have an elegant push mechanism. Appreciate any comments on this.

(1) I'm not convinced that this will be a performance problem, 
particularly if dampening is applied to the subscription, or a periodic 
subscription is used instead.  I.e. I see that YANG push performance 
should be no worse than polling, and I anticipate that it will be 
significantly better.
(2) The YANG push draft is already 4 years old. I think that we must 
just finish what we are working on now, then we can discuss 
extensions/future work. If we keep churning the requirements and 
solution then we just end up with no solution, and the market looks 
elsewhere (as is already happening)

So, my pragmatic suggestion is:
  - we collectively try not to get side-tracked discussing this in 
detail now,
  - implement it as it is defined in the draft,
  - benchmark it to see how it performs (perhaps also compare to 
performance if JSON, or CBOR is used as an encoding as well),
  - if it really performs poorly (that is not due to implementation), 
then write up an ID describing the problem (including why 
dampening/periodic subscriptions don't help), with figures to back it 
up, etc,
  - the WG can then evaluate whether this is really a problem that needs 
to be solved, and if it does then someone can write a draft proposing an 
appropriate solution.

Does that seem reasonable?

Thanks,
Rob


> </Tim>
>
>>>
>>> -----------------------------
>>>
>>> Both “subscriber” and “receiver” are used, bit confusing sometimes.
>>> Shall we only use “subscriber”
>>>
>>> They are different entities, the definitions are in
>>> draft-ietf-netconf-subscribed-notifications:
>>>
>>>     Receiver: A target to which a publisher pushes subscribed event
>>>     records.  For dynamic subscriptions, the receiver and subscriber are
>>>     the same entity.
>>>
>>>     Subscriber: A client able to request and negotiate a contract for the
>>>     generation and push of event records from a publisher.  For dynamic
>>>     subscriptions, the receiver and subscriber are the same entity.
>>>
>>>
>>>
>>>
>>>
>>> ------------------------
>>>
>>> 3.11.1.  Robustness and reliability
>>>
>>>     Note: It is perfectly acceptable to have a series of
>>> "push-change-
>>>
>>>     update" notifications (and even "push update" notifications)
>>> serially
>>>
>>>     queued at the transport layer awaiting transmission.  It is not
>>>
>>>     required to merge pending update records.  I.e., the dampening
>>> period
>>>
>>>     applies to update record creation, not transmission.
>>>
>>> My suggestion is:
>>>
>>> The publisher should increase dampening period automatically in case
>>> the message queue reaches a limit.
>>>
>>> This is to avoid notifications lost due to queue limit in case
>>> subscriber is busy or temporarily unreachable.
>>>
>>> I don't think that this is how the dampening that is currently
>>> defined should work, since it is expected to provide a strong
>>> guarantee that it will either deliver the notifications to the
>>> receiver, or otherwise notify to the receiver that some updates [may] have been lost.
>>>
>>> I could imagine that another, softer type of dampening, could
>>> potentially be defined in future as a separate
>>> extension/augmentation, but I don't think that should go into this
>>> document, because it would massively slow it down, and the industry already needs this standard now.
>>>
>>>
>> +1 -- the server does what it is told and does not decide to change
>> +the
>> subscription on its own
> +1
>
>
> /martin
>
>>
>>
>>>
>>> -----------------------------
>>>
>>> It would be appreciated if suggestions can be given on how push
>>> shall be used on running, startup and candidate datastores
>>>
>>> It should work the same way as YANG push on any other datastore.
>>> The mechanism described in the draft seems to be entirely datastore agnostic.
>>> In what way do you think it may behave differently?
>>>
>>> Although I could imagine that implementations may not support
>>> subscriptions on startup or candidate, in which case I would expect
>>> that the subscription would be rejected.
>>>
> <Tim>
> Thanks Rob.
> I think you understand my concerns. The whole yang push mechanism is datastore agnostic.
> But my position is: if we follow this draft, I am pretty sure implementation of yang push later will be different across all vendors. Someone will accept subscription on startup but others will reject. Some will support pushing changes on candidate but others not.
> I believe the original intention of Netconf to provide a standardized mechanism and we are all working to scandalized as much as possible to allow different vendors to have interoperability with each other.
> If IETF working group can give instructions on how push mechanism can be adopted to different datastores instead of let vendors make decisions themselves, I believe we have a solution easier get interoperated.
> </Tim>
>
>
>>> Thanks,
>>> Rob
>>>
>>>
>>>
>> Andy
>>
>>
>>>
>>> -------------------------------
>>>
>>>
>>>
>>> Regards,
>>>
>>> Tim
>>>
>>>
>>> _______________________________________________
>>> Netconf mailing
>>> listNetconf@ietf.orghttps://www.ietf.org/mailman/listinfo/netconf
>>>
>>>
>>>
>>> _______________________________________________
>>> Netconf mailing list
>>> Netconf@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netconf
>>>
>>>
> _______________________________________________
> Netconf mailing list
> Netconf@ietf.org
> https://www.ietf.org/mailman/listinfo/netconf