Re: [dhcwg] Opsdir last call review of draft-ietf-dhc-dhcpv6-yang-24

ianfarrer@gmx.com Wed, 02 February 2022 16:09 UTC

Return-Path: <ianfarrer@gmx.com>
X-Original-To: dhcwg@ietfa.amsl.com
Delivered-To: dhcwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BE5BF3A146E; Wed, 2 Feb 2022 08:09:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=gmx.net
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 h8OLN5df1AET; Wed, 2 Feb 2022 08:09:24 -0800 (PST)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 81A8B3A1456; Wed, 2 Feb 2022 08:09:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1643818149; bh=F+sIK0fk0XT40RtklTDSuu1J28n+eg93d2IWj1Oqsbs=; h=X-UI-Sender-Class:From:Subject:Date:In-Reply-To:Cc:To:References; b=CwTyZgKihtC6NcXJjYkWNDDQerYT+LihNwV0QRVa5vuX16DwNh4zkJQ53w4zTrHLd ehZEm0olEWgGvt8cDtEk/TY/rpBv5//eQpjdIymBw7irW37jcgh5nZ+sgun53qXBMd imM6lY7ovu5WsA5OfWJLJcsycPYeofRYzCp73q1w=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from smtpclient.apple ([78.35.54.88]) by mail.gmx.net (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1Mz9Un-1mJlxe1kfr-00wHis; Wed, 02 Feb 2022 17:09:09 +0100
From: ianfarrer@gmx.com
Message-Id: <C1267AB2-0FCC-41CE-976D-26DE84522777@gmx.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_24B2B448-FAB6-4DD5-B3C9-3265AB972A62"
Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.40.0.1.81\))
Date: Wed, 02 Feb 2022 17:09:07 +0100
In-Reply-To: <91989b7006674302acccea2d964bce65@huawei.com>
Cc: "ops-dir@ietf.org" <ops-dir@ietf.org>, "dhcwg@ietf.org" <dhcwg@ietf.org>, "draft-ietf-dhc-dhcpv6-yang.all@ietf.org" <draft-ietf-dhc-dhcpv6-yang.all@ietf.org>, "last-call@ietf.org" <last-call@ietf.org>
To: "Liushucheng (Will LIU, Strategy & Industry Development)" <liushucheng@huawei.com>
References: <163722823173.27432.7026766423118638736@ietfa.amsl.com> <A698BBD7-DD36-485C-84DE-4949317322A8@gmx.com> <91989b7006674302acccea2d964bce65@huawei.com>
X-Mailer: Apple Mail (2.3693.40.0.1.81)
X-Provags-ID: V03:K1:htPp2F5ln7GdhRA0tKKNNrl9rTX9C0B9DceEKoGRJDklGg+wy7i N9fyggRPej1ewzB7ja6Jc8bq8W+fcGbqjuRF6Wi1FFYcQTcfL7rL1x6o9bl0IRn6g+g2NfY GmmMAWTB0ROy+9KdpArSdrBFhWWdTbbIvRxiy7eAOKm4iuHRInexNB6c89F5JvWIX0UiYLp HgR0B6rIyMgzulr5sF7Dw==
X-UI-Out-Filterresults: notjunk:1;V03:K0:CgppOwB4n1U=:342QoK2BPimdq5aw1+RQLE 0l0epPIUf/rluD6FtLKdAGY8U6i6Qvk2T0hvkVlEtjop7eiatHiRP9hxUONM+DlgoAHtIP/DL 2sam4nsJzod+19WLSAFxgPbwfkPg5VK8zA5/4PGu0oism9wayhSwnGXDnhN3ql78UkymFOnW5 LJz/YavI/N2G/4v8NLhsSIaWjY+lQpH2MIbb6H2nxaXm0cGlbiNDWYd8b/7MSrvHo2JHptfw1 piUZFp/nyajShcMPxYBZzUsucCiPgisxD6+skKn0BnjDQ1E/kF9VQBxhF0y/g4JYyuHIxF/nt SJP1wjg40hSC0soA8YHzu+nfTI+NFJacleSN3HJcrskpo4XUyiqq+wqT/oTigmUx+KRGnBRCo RX1b23peoUEZzQlBeTUNtDgAL62xwI3iwe5cSxu8xMPp+QOSKr2QSOqV4ApHcb3Wrsz8arNDO 8a21MUfNdS12DRZ5A4515GybTaqlYHd2oCjquNuUgAGgCmAL8JZI/vvs5mC7e4FCRyjhI/H7K V4qRqU6/Kf8rV8TeAmoGJ9yaGsvzlnbIwuNBc1mvcAf4P50XMdWhs75IxtvHpvorlbG1GQRJD b29Bs6N/4OdkwtwxHo/hoWxfMnmtZ6H5JvUuihYzJsW+mcyv97Ey9xFbTd6hTcXA/N6Xe+z55 BqixHe38oPp9CxTXmJbgLJA3kdngrKiMgNCwQSPOSGdukGfA/xK8py1DZToIqta0j+VznmabK AFs4iRoNgdiTsvyO87tZnwMd8tKI512RMfyq/PAyjIA5pN1oz4FN2q4mEskX0DV+YE3HiF07h suC6EzXbIHE3C8O9koMdnU8sGFRjqs30/bvWF4MXIH4UjREkW1DwRVCw2ULl5GGxhqta64SC3 TiLPuTG2Euv3mxdjH1tf6ljcAarkjFBrL93CedvBECdMtlDwyQCiSJKZ2kSTrlham/Qu6vNl0 Et0wY5Udgkd0LDahEpz8e/l0ZClrh7XyUDqYgi/roNvqL2mH5oS+HYVChM8IzlkeBD3dh27p4 DJX1t1TexZB2vcr9twnHCL6bbyUF9ST7fyzDz6cdt/9JAH+yS7MEHtc3rQMz4nLCuagxKOC/3 g6Geta9ZM2iPTYCTygTJNOLdGh3TaZz7ZpbCzmnyP7l5tmWm2NBnaCg/OfS0aPZatUBTZ3Vnk K8I3Sc4ugio0BBDe0KDSxrMxjD
Archived-At: <https://mailarchive.ietf.org/arch/msg/dhcwg/80ra4hUcVQ7TQL37OpLOjRi1fqA>
Subject: Re: [dhcwg] Opsdir last call review of draft-ietf-dhc-dhcpv6-yang-24
X-BeenThere: dhcwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Dynamic Host Configuration <dhcwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dhcwg/>
List-Post: <mailto:dhcwg@ietf.org>
List-Help: <mailto:dhcwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Feb 2022 16:09:40 -0000

Hi Will,

Thanks for your comments and my apologies for the length of time that it’s taken me to reply.

Regarding your suggestion for running the server on specific interfaces or IP addresses and making an assignment decisions based on that, the way that the example YANG modules would handle this is as follows.

Interface / listener address & port is configured via the following portion of example-dhcpv6-server-conf.yang:

                                                             
      leaf ipv6-listen-port {                                           
        type uint16;                                                    
        default 547;                                                    
        description                                                     
          "UDP port that the server will listen on.";                   
      }                                                                 
      choice listening-interfaces {                                     
        default all-interfaces;                                         
        description                                                     
          "Configures which interface or addresses the server will         
          listen for incoming messages on.";                            
        case all-interfaces {                                           
          container all-interfaces {                                    
          presence true;                                                
          description                                                   
            "Configures the server to listen for incoming messages         
            on all IPv6 addresses (unicast and multicast) on all of        
            its network interfaces.";                                   
          }                                                             
        }                                                               
        case interface-list {                                           
          leaf-list interfaces {                                        
            type if:interface-ref;                                      
            description                                                 
              "List of interfaces on which the server will listen for   
              incoming messages. Messages addressed to any              
              valid IPv6 address (unicast and multicast) will be        
              received.";                                               
          }                                                             
        }                                                               
        case address-list {                                             
          leaf-list address-list {                                      
            type inet:ipv6-address;                                     
            description                                                 
              "List of IPv6 address(es) on which the server will        
              listen for incoming DHCPv6 messages.";                    
          }                                                             
        }                                                               
      }                                                                 
      leaf-list interfaces-config {                                     
        type if:interface-ref;                                          
        default "if:interfaces/if:interface/if:name";                   
        description                                                     
          "A leaf list of interfaces on which the server should         
          listen.";                                                     
      }   


Making address/prefix assignments based on the interface/address that a request is received on is treated as a class-selection function (along with other address/prefix selection criteria). The following portion of 
Example-dhcpv6-class-select.yang would do this:


     case received-interface-id {                                      
        description                                                     
          "Client class selection based on the incoming interface          
          of the DHCPv6 message.";                                      
        leaf received-interface {                                       
          type if:interface-ref;                                        
          description                                                   
            "Reference to the interface entry for the incoming          
            DHCPv6 message.";                                           
        }                                                               
      }                                                                 
      case packet-source-address-id {                                   
        description                                                     
          "Client class selection based on the source address of        
          the DHCPv6 message.";                                         
        leaf packet-source-address {                                    
          type inet:ipv6-address;                                       
          mandatory true;                                               
          description                                                   
            "Source address of the DHCPv6 message.";                    
        }                                                               
      }                                                                 
      case packet-destination-address-id {                              
        description                                                     
          "Client class selection based on the destination address         
          of the DHCPv6 message.";                                      
        leaf packet-destination-address {                               
          type inet:ipv6-address;                                       
          mandatory true;                                               
          description                                                   
            "Destination address of the DHCPv6 message.";               
        }                                                               
      }                                

Does this address your comment?

Thanks,
Ian

> On 16. Dec 2021, at 08:05, Liushucheng (Will LIU, Strategy & Industry Development) <liushucheng@huawei.com> wrote:
> 
> Dear Ian,
> 
> Sorry for being late. 
> Thanks for your reply. I had a long discussion on with several people to try to provide some content example. My reply inline with  [Will].
> 
>> -----Original Message-----
>> From: ianfarrer@gmx.com <mailto:ianfarrer@gmx.com> [mailto:ianfarrer@gmx.com <mailto:ianfarrer@gmx.com>]
>> Sent: Friday, November 19, 2021 3:18 PM
>> To: Liushucheng (Will LIU, Strategy & Industry Development)
>> <liushucheng@huawei.com <mailto:liushucheng@huawei.com>>
>> Cc: ops-dir@ietf.org <mailto:ops-dir@ietf.org>; dhcwg@ietf.org <mailto:dhcwg@ietf.org>; draft-ietf-dhc-dhcpv6-yang.all@ietf.org <mailto:draft-ietf-dhc-dhcpv6-yang.all@ietf.org>;
>> last-call@ietf.org <mailto:last-call@ietf.org>
>> Subject: Re: Opsdir last call review of draft-ietf-dhc-dhcpv6-yang-24
>> 
>> Hi Will
>> 
>> Many thanks for your review and comments. Please see inline below.
>> 
>> Best regards,
>> Ian
>> 
>>> On 18. Nov 2021, at 10:37, Will LIU via Datatracker <noreply@ietf.org>
>> wrote:
>>> 
>>> Reviewer: Will LIU
>>> Review result: Has Nits
>>> 
>>> Hi all,
>>> 
>>> I have reviewed draft-ietf-dhc-dhcpv6-yang-24 as part of the
>>> Operational directorate's ongoing effort to review all IETF documents
>>> being processed by the IESG.  These comments were written with the
>>> intent of improving the operational aspects of the IETF drafts.
>>> Comments that are not addressed in last call may be included in AD
>>> reviews during the IESG review.  Document editors and WG chairs should
>>> treat these comments just like any other last call comments.
>>> 
>>> “This document describes YANG data modules for the configuration and
>>>  management of DHCPv6 (Dynamic Host Configuration Protocol for IPv6
>>>  RFC8415) servers, relays, and clients.”
>>> 
>>> My overall view of the document is 'Has Nits'.
>>> 
>>> ** Technical **
>>> 
>>> Page54,
>>> 1. The DHCPv6 server may be bound to an interface to specify the
>>> DHCPv6 address pool of the corresponding interface.
>> 
>> [if - Interface configuration and binding the server function to specific
>> interfaces/addresses is not covered in the ietf-dhc6-server module. There is a
>> lot of variance in the way that individual implementations configure this (e.g.
>> server/router/BNG), and also the class-selection logic that defines how an
>> individual request’s address/prefix pool and options are selected that this best
>> left to the implementor to define implementation specific YANG to cover these
>> areas.
>> 
>> Examples of vendor specific configuration modules for the server’s base
>> configuration and class-selector logic are given in Appendixes C & D.
>> ]
> 
> [Will] Agree this is not covered in the module and a lot of variance exist. After checking the examples in Appendix, there is no example about DHCPv6 server bounding to an interface to specific interfaces/addresses, may I suggest add a short example like below?
> 
> augment /if:interfaces/if:interface {
>    description
>      "Extend interface attribute.";
>    container dhcpv6-server-attribute {
>      description
>        "Configure DHCPv6 server interface function.";
> 
>      choice server-mode {
>        description
>          "Set dhcpv6 server mode in the Interface.";
>        case automatic-enable {
>          description
>            "Enable/disable dhcpv6 server automatic mode.";
>          leaf server-automatic-anable {
>            type boolean;
>            default "false";
>            description
>              "Enable/disable dhcpv6 server automatic mode.";
>          }
>        }
>        case pool-name {
>          description
>            "Pool name.";
>          leaf pool-name {
>            type string {
>              length "1..31";
>            }
>            description
>              "Pool name.";
>          }
>        }
>      }
>      leaf is-allow-hint {
>        type boolean;
>        default "false";
>        description
>          "Enable/disable to allow the server to assign prefix according to the client expectation.";
>      }
>      leaf preference {
>        type uint8 {
>          range "0..255";
>        }
>        default "0";
>        description
>          "The server priority in the advertise packet.";
>      }
>      leaf is-rapid {
>        type boolean;
>        default "false";
>        description
>          "Enable/disable to support for fast allocation.";
>      }
>      leaf is-unicast {
>        type boolean;
>        default "false";
>        description
>          "Enable/disable to specify the unicast communication between client and server in the address renewal process.";
>      }
> }
> 
>> 
>>> 2. The key of container address-pools and container prefix-pools in
>>> the DHCPv6 server may be changed to pool-name.
>> 
>> [if - ‘pool-id’ was originally typed as being uint32 with the intention that it
>> was just a unique ID number for the pool. The type got changed to string due
>> to a recent review comment, But I think the intended use remains the same - it
>> is a unique identifier for the pool, whether the user choses a numeric or a
>> string based identifier as suits their requirements.
>> 
>> My feeling is that pool-id is a suitable name for this function, but would be
>> happy to change if there is a good reason to use pool-name.
>> ]
>> 
> [Will] Agree to change 'pool-id’ to string. 
> 
> Regards, 	|   致礼! 
> Will LIU  	|   刘树成
> 
>>> 
>>> ** Editorial **
>>> 
>>> No.
>>> 
>>> Regards,
>>> Will (Shucheng LIU)