Re: [i2rs] RIB Info/Data model questions: nexthop-id

"Susan Hares" <shares@ndzh.com> Wed, 07 October 2015 12:01 UTC

Return-Path: <shares@ndzh.com>
X-Original-To: i2rs@ietfa.amsl.com
Delivered-To: i2rs@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 61B791B2E8C for <i2rs@ietfa.amsl.com>; Wed, 7 Oct 2015 05:01:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -97.654
X-Spam-Level:
X-Spam-Status: No, score=-97.654 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] autolearn=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 ChS85deX4rLK for <i2rs@ietfa.amsl.com>; Wed, 7 Oct 2015 05:01:04 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) (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 D018C1B2E80 for <i2rs@ietf.org>; Wed, 7 Oct 2015 05:01:03 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=184.157.84.146;
From: Susan Hares <shares@ndzh.com>
To: "'Jeffrey (Zhaohui) Zhang'" <zzhang@juniper.net>, i2rs@ietf.org
References: <BLUPR0501MB171534CA5734108C0FF7986DD4480@BLUPR0501MB1715.namprd05.prod.outlook.com>
In-Reply-To: <BLUPR0501MB171534CA5734108C0FF7986DD4480@BLUPR0501MB1715.namprd05.prod.outlook.com>
Date: Wed, 07 Oct 2015 08:01:02 -0400
Message-ID: <002701d100f7$d6b17050$841450f0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0028_01D100D6.4FA21A40"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQD0N/GpKv18NqpfD0Yo1ida7PTLX6AZdPdw
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com
Archived-At: <http://mailarchive.ietf.org/arch/msg/i2rs/Eor73EDvzleQFX8LdixNP1dodcI>
Subject: Re: [i2rs] RIB Info/Data model questions: nexthop-id
X-BeenThere: i2rs@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Interface to The Internet Routing System \(IRS\)" <i2rs.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/i2rs>, <mailto:i2rs-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/i2rs/>
List-Post: <mailto:i2rs@ietf.org>
List-Help: <mailto:i2rs-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/i2rs>, <mailto:i2rs-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Oct 2015 12:01:08 -0000

Jeffrey: 

 

to start this discussion going, I would like to provide you with the answer
that was given when the I2RS RIB Information Model was designed.

 

.         All I2RS RIB information is intended config (see
ietf-chairs-netmod-opstate-reqs-01 or ietf-openconfig-netmod-opstat for the
definition of intended config), 

.         nexthop-id is assigned by the I2RS client, and inserted into the
I2RS agent, 

.         the I2RS agent installs the I2RS RIB ephemeral state, and provides
back status (installed, not installed). 

 

nexthop id  allows for all types of next hops (chains, inet-v4, inet-v6,
mac-address, interface tunnels) to be indicated  with a single id that can
be directly accessed.  This allows these different types of next-hop to be
directly referenced with the nexthop-id. 

 

As to protection,  Let's base our discussion on I2RS RIB IM p. 19 (see
below) 

 

The protection id - identifies of preference, nexthop-id.  Preference ID
identifies the tuple.   You might have multiple tuples with a nexthop-id.  

 

Protection-id 1:  preference=10, nexthop-id=1

Protection-id 2:  preference = 2, nexthop-id=1

Protection-id 3:  preference=1, nexthop-id = 1

Protection-id 4: preference =1, nexthop-id=2 

 

I do not understand how the protection-id should be linked by nexthop. 

 

Sue 

======================

I2RS RIB IM p. 19 for your reference: 

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

 

<nexthop> ::= <NEXTHOP_PROTECTION> <1> <interface-primary>

                                   <2> <interface-backup>)

 

Derived as follows: 

 

<nexthop> ::= <nexthop-protection>
<nexthop> ::= <NEXTHOP_PROTECTION> (<NEXTHOP_PREFERENCE> <nexthop>
                      (<NEXTHOP_PREFERENCE> <nexthop>)...)
<nexthop> ::= <NEXTHOP_PROTECTION> (<NEXTHOP_PREFERENCE> <nexthop>
                      (<NEXTHOP_PREFERENCE> <nexthop>))
<nexthop> ::= <NEXTHOP_PROTECTION> ((<NEXTHOP_PREFERENCE> <nexthop-base>
                      (<NEXTHOP_PREFERENCE> <nexthop-base>))
<nexthop> ::= <NEXTHOP_PROTECTION> (<1> <interface-primary>
                      (<2> <interface-backup>))

 

Traffic can be load-balanced among multiple primary nexthops and a
single backup.  In such a case, the nexthop will look like:
 
   <nexthop> ::= <NEXTHOP_PROTECTION> (<1>
                 (<NEXTHOP_LOAD_BALANCE>
                  (<NEXTHOP_LB_WEIGHT> <nexthop-base>
                  (<NEXTHOP_LB_WEIGHT> <nexthop-base>) ...))
                   <2> <nexthop-base>)

 

 

-----Original Message-----
From: i2rs [mailto:i2rs-bounces@ietf.org] On Behalf Of Jeffrey (Zhaohui)
Zhang
Sent: Monday, October 05, 2015 9:59 AM
To: i2rs@ietf.org
Subject: [i2rs] RIB Info/Data model questions: nexthop-id

 

Hi,

 

Both the RIB info and data model mentions nexthop-id, but neither specifies
who manages/assigns the ID. Can the specs point that out?

 

It seems that it could be both ways - the IDs could be allocated by routers
(servers) or could be allocated by clients. Different ID spaces would be
used depending on who allocates the IDs.

 

Related to the above, a specific question on the data model:

 

  grouping nexthop {

    leaf nexthop-id {

      mandatory true;

      type uint32;

    }

    choice nexthop-type {

       ...

       case nexthop-protection {

        list nexthop-protection-list {

            key "nexthop-protection-id"; 

            leaf nexthop-protection-id {

              mandatory true;

              type uint32;

            }

           leaf nexthop-preference {

             ...

           }

           leaf nexthop {

             mandatory true;

             type nexthop-ref;

           }

        }

      }

 

Here a nexthop-protection is a list. Being a list it requires a key and we
defined this uint32 nexthop-protection-id, which I assume the controller
needs to assign and both the controller and the router needs to remember.
The list entry has a member "nexthop" which is a nexthop-ref, which is a
nexthop-id:

 

  typedef nexthop-ref {

    type leafref {

      path  "/i2rs-rib:routing-instance/i2rs-rib:rib-list" +

            "/i2rs-rib:route-list/i2rs-rib:nexthop/i2rs-rib:nexthop-id";

    }

  }

 

So - why can't we use the nexthop-id itself as the key?

 

Thanks.

 

Jeffrey

 

_______________________________________________

i2rs mailing list

 <mailto:i2rs@ietf.org> i2rs@ietf.org

 <https://www.ietf.org/mailman/listinfo/i2rs>
https://www.ietf.org/mailman/listinfo/i2rs