Subject: [Rift] Based on today's interim/meet, suggested text to deal with the metric on negative disaggregation

From: Tony Przygienda <[email-masked]>
Date: Thu, 9 Apr 2020 09:08:05 -0700

first, the model today

/** Attributes of a prefix. */
struct PrefixAttributes {
    /** Distance of the prefix. */
    2: required common.MetricType            metric
            = common.default_distance;
    /** Generic unordered set of route tags, can be redistributed
        to other protocols or use within the context of real time
        analytics. */
    3: optional set<common.RouteTagType>     tags;
    /** Monotonic clock for mobile addresses. */
    4: optional common.PrefixSequenceType    monotonic_clock;
    /** Indicates if the interface is a node loopback. */
    6: optional bool                         loopback = false;
    /** Indicates that the prefix is directly attached, i.e. should be
        routed to even if the node is in overload. */
    7: optional bool                         directly_attached = true;

    /** In case of locally originated prefixes, i.e. interface
        addresses this can describe which link the address
        belongs to. */
   10: optional common.LinkIDType            from_link;
}

Since the model itself is normative I suggest to add the following
clarifying text

/** Attributes of a prefix. */
struct PrefixAttributes {
    /** Distance of the prefix. In case of a
        negatively distributed prefix this attribute
        MUST be set to `infinite_distance`
        by the originator and it MUST be ignored by all nodes
        during computation. */
    2: required common.MetricType            metric
            = common.default_distance;
    /** Generic unordered set of route tags, can be redistributed
        to other protocols or use within the context of real time
        analytics. */
    3: optional set<common.RouteTagType>     tags;
    /** Monotonic clock for mobile addresses. In case of a
        negatively distributed prefix this attribute MUST NOT
        be included by the originator and it MUST be ignored
        by all nodes during computation. */
    4: optional common.PrefixSequenceType    monotonic_clock;
    /** Indicates if the prefix is a node loopback. In case of a
        negatively distributed prefix this attribute MUST not
        be included by the originator and it MUST be ignored by
        all nodes during computation. */
    6: optional bool                         loopback = false;
    /** Indicates that the prefix is directly attached, i.e. should be
        routed to even if the node is in overload. In case of a
        negatively distributed prefix this attribute MUST not
        be included by the originator and it MUST be ignored
        by all nodes during computation. */
    7: optional bool                         directly_attached = true;
    /** In case of locally originated prefixes, i.e. interface
        addresses this can describe which link the address
        belongs to. In case of a negatively distributed prefix
        this attribute MUST not be included by the originator
        and it MUST be ignored by all nodes during computation. */
   10: optional common.LinkIDType            from_link;
}

--- tony