Subject: [netmod] ip config issues

From: Martin Bjorklund <[email-masked]>
Date: Fri, 23 Mar 2012 15:29:03 +0100 (CET)

Hi,

Here's a list of the open issues I will present in our session next
week.  It is really just a summary of issues raised on the ML.

* ip-07 add parameters to control is-router / ip-forwarding [open]

  RFC 4861 mandates a per-interface config parameter IsRouter.

  IP-MIB defines this as ipv6InterfaceForwarding, but also has a
  global parameter ipv6IpForwarding, that can be used to globally
  disable forwarding on all interfaces.

  Q1. Should we add a per-interface is-router / ip-forwarding leaf?

  Q2. Should we also add the global parameter?

  Q3. Should we do the same for ipv4?  IP-MIB doesn't have per-interface
      forwarding for ipv4.  Linux supports per-interface forwarding.

** Solution #ip-07.01

  Yes to all.  If create-global-addresses is kept, it can be
  conditional with a "when" expression based on this new leaf:

    leaf is-router {  // or ip-forwarding?
      type boolean;
      description
        "If true, the device acts as a router, otherwise as a host.";
    }

    leaf create-global-addresses {
      when "../is-router = 'false'";
      ...
    }

* ip-08 configure dynamic mechanisms for ip address assigments [open]

  IP addresses can be assigned using different mechanisms; manually
  configured (as specified in the current datamodel), or assigned
  through some dynamic protocol like DHCP.  It is agreed that we
  should not add parameters to configure these other protocols, but it
  might be useful to have a standard way to control which mechanisms
  to use for address assignment.

** Solution #ip-08.01

  Something like this:  

    container ipv6 {
      ...
      leaf-list address-assignment {
        type enumeration {
          enum manual;  // needed; or always added?
          enum dhcp;
          enum no-autoconf; // autoconf is enabled by default
        }
      }
      ...
    }

  If this is done, this replaces the create-global-addresses leaf.

** Solution #ip-08.02

  This could also be more extensible by using an identity:

    container ipv6 {
      ...
      leaf-list address-assignment {
        type identityref {
          base ipv6-address-assignment-mechanism;
        }
      }
    }

  And then in the dhcp module:

    identity dhcp {
      base ip:ipv6-address-assignment-mechanism;
    }

** Solution #ip-08.03

  No need for these fancy mechanisms in this simple case; addresses
  are additive, just use the addresses from all enabled mechanisms.

* ip-09 add non-config leafs [open]

  It was suggested that we add the following stats objects:
   
    o  all addresses on an interface (configured or dynamically
       assigned)

    o  RFC 4861, 6.3.2 (per interface)
      - link-mtu
      - cur-hop-limit
      - base-reachable-time
      - reachable-time
      - retrans-timer

    o  RFC 4861, 5.1 (global)
      - neighbor cache
      - routing table

    Ditto for ipv4.

  Should we add stats objects at all?  What about duplication of MIB
  objects, is that a problem?

  If we add all addresses on an interface, do we also need a list of
  all interfaces, including the non-configured interfaces?

/martin