Re: [Anima] Review comments on draft-ietf-anima-grasp-api

"Liguangpeng (Roc, Network Technology Laboratory)" <liguangpeng@huawei.com> Thu, 19 September 2019 06:34 UTC

Return-Path: <liguangpeng@huawei.com>
X-Original-To: anima@ietfa.amsl.com
Delivered-To: anima@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2751E1200E7 for <anima@ietfa.amsl.com>; Wed, 18 Sep 2019 23:34:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 GiMiZEAjGIEA for <anima@ietfa.amsl.com>; Wed, 18 Sep 2019 23:34:12 -0700 (PDT)
Received: from huawei.com (lhrrgout.huawei.com [185.176.76.210]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A916212006D for <anima@ietf.org>; Wed, 18 Sep 2019 23:34:11 -0700 (PDT)
Received: from lhreml703-cah.china.huawei.com (unknown [172.18.7.108]) by Forcepoint Email with ESMTP id 3FD6AF0744DF5EA4BB3A; Thu, 19 Sep 2019 07:34:09 +0100 (IST)
Received: from lhreml705-chm.china.huawei.com (10.201.108.54) by lhreml703-cah.china.huawei.com (10.201.108.44) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 19 Sep 2019 07:34:08 +0100
Received: from lhreml705-chm.china.huawei.com (10.201.108.54) by lhreml705-chm.china.huawei.com (10.201.108.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Thu, 19 Sep 2019 07:34:08 +0100
Received: from DGGEMM421-HUB.china.huawei.com (10.1.198.38) by lhreml705-chm.china.huawei.com (10.201.108.54) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256) id 15.1.1713.5 via Frontend Transport; Thu, 19 Sep 2019 07:34:08 +0100
Received: from DGGEMM533-MBX.china.huawei.com ([169.254.5.252]) by dggemm421-hub.china.huawei.com ([10.1.198.38]) with mapi id 14.03.0439.000; Thu, 19 Sep 2019 14:34:02 +0800
From: "Liguangpeng (Roc, Network Technology Laboratory)" <liguangpeng@huawei.com>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>, "anima@ietf.org" <anima@ietf.org>
Thread-Topic: Review comments on draft-ietf-anima-grasp-api
Thread-Index: AQHVbmERtpw7kJuDqkiyv51Nt/0PrKcyLc9A//+Ow4CAAMrXcA==
Date: Thu, 19 Sep 2019 06:34:01 +0000
Message-ID: <6F4E6B0C717D4641A2B79BC1740D8CF4A7E2307E@DGGEMM533-MBX.china.huawei.com>
References: <6F4E6B0C717D4641A2B79BC1740D8CF4A7E22578@DGGEMM533-MBX.china.huawei.com> <59be9ae2-9ccf-a5aa-1b70-5075574a05d3@gmail.com> <6F4E6B0C717D4641A2B79BC1740D8CF4A7E22D04@DGGEMM533-MBX.china.huawei.com> <bca8409b-8fc6-4a52-4b2c-27cfd63e1070@gmail.com>
In-Reply-To: <bca8409b-8fc6-4a52-4b2c-27cfd63e1070@gmail.com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.130.157.47]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima/scNa9NIjQ7vR64_EppPykMhla5Q>
Subject: Re: [Anima] Review comments on draft-ietf-anima-grasp-api
X-BeenThere: anima@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Autonomic Networking Integrated Model and Approach <anima.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/anima>, <mailto:anima-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima/>
List-Post: <mailto:anima@ietf.org>
List-Help: <mailto:anima-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/anima>, <mailto:anima-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Sep 2019 06:34:14 -0000

> Sorry to insist, but I really disagree. I'm thinking about how I would code the
> callback function for a resource allocator, and I'm sure it would need some sort
> of identifier for the particular resource request, since it might be handling many
> resource requests in parallel. In GRASP terms that is a session identifier.

I agree there must be a session identifier in GRASP. However I think this draft is about to define the GRASP API for ASA. The ASA invokes functions through these APIs, and a grasp library implement APIs which includes encapsulating GRASP messages, send out them and wait for receiving response messages. So for call-back approach, all the magic is in the library, the library is responsible for mapping session identifier in messages to correct call-back threads. The ASA just need to tell library which call-back function would be executed when invoke a asynchronous API, the ASA knows nothing about the session identifier used in the messages, thus donot need 'session-nonce' parameter in the API.

Best regards,
Guangpeng

> -----Original Message-----
> From: Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
> Sent: Thursday, September 19, 2019 10:13 AM
> To: Liguangpeng (Roc, Network Technology Laboratory)
> <liguangpeng@huawei.com>; anima@ietf.org
> Subject: Re: Review comments on draft-ietf-anima-grasp-api
> 
> On 19-Sep-19 13:23, Liguangpeng (Roc, Network Technology Laboratory) wrote:
> > Please see inline.
> >
> >> -----Original Message-----
> >> From: Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
> >> Sent: Thursday, September 19, 2019 4:39 AM
> >> To: Liguangpeng (Roc, Network Technology Laboratory)
> >> <liguangpeng@huawei.com>; anima@ietf.org
> >> Subject: Re: Review comments on draft-ietf-anima-grasp-api
> >>
> >> On 18-Sep-19 18:22, Liguangpeng (Roc, Network Technology Laboratory)
> wrote:
> >>> Hi authors,
> >>>
> >>> I read the draft. I think the API list for grasp is complete and
> >>> good. But I have
> >> some comments on section 2.2.
> >>>
> >>> 2.2. Asynchronous Operations
> >>>
> >>> '... there are two main techniques for such parallel operations:
> >> multi-threading, or a polling or 'event loop' structure.'
> >>>
> >>> According to my knowledge, 'multi-threading' is a different thing
> >>> with
> >> asynchronous programming mechanism. So I prefer to 'asynchronous
> >> programming mechanisms with multi-threading' here.
> >>
> >> OK, will rephrase.
> >>
> >>> The main techniques for asynchronous programming discussed in draft
> >>> should
> >> be 'polling', however, polling is not so efficient. The more
> >> efficient one is 'call back' mechanism.
> >>
> >> Yes, we certainly need to discuss callbacks. I'm not sure it is
> >> always more efficient, because that depends on the underlying
> implementation.
> >>
> > Agree that all performance rely on the implementation. Generally saying,
> polling will consume CPU resource to query response again and again until
> timeout occurs. In other hand, every implement of agent based on polling
> mechanism library will couple with the library. That means most time different
> programmers will write the code respectively for the agent and library. It's
> more hard to guarantee achieve the best performance. Compared to polling,
> call back mechanism decouples the whole workflow. Only the library
> programmer need to care about the asynchronous part performance. The
> agent programmers just need to implement logics according to 'call back'
> mechanism then everyone can get the same performance provided by the
> same library.
> >
> >>> 'session_nonce' parameter may be useful for polling, but 'call back
> >>> function
> >> pointer( or reference in some programming language)' is normally used
> >> as parameter of invoked functions. All logics should be executed in
> >> call back functions which will be called when some events occur, for
> >> example receiving response message for the request, or message timeout.
> >>
> >> Yes. However, if you have two simultaneous negotiations, you will
> >> still need the session_nonce in the callback, I believe.
> >
> > Yes or not, I think. If the library is implemented based on call back mechanism,
> the agent programmer don't need to know anything about 'session-nonce'. This
> means there needn't be this parameter in this kind of API. Indeed, the
> implementer of library need to consider 'session_nonce' carefully if its name is
> still 'session_nonce'. So, my opinion is 'session_nonce' is necessary parameter
> for polling-based API, but not for call-back-based API.
> 
> Sorry to insist, but I really disagree. I'm thinking about how I would code the
> callback function for a resource allocator, and I'm sure it would need some sort
> of identifier for the particular resource request, since it might be handling many
> resource requests in parallel. In GRASP terms that is a session identifier.
> 
> Regards
>     Brian
> 
> >
> >> Thanks very much,
> >>
> >>     Brian
> >>
> >>>
> >>> Best regards,
> >>>
> >>> Guangpeng Li
> >>
> > Best regards,
> > Guangpeng
> >