Re: [bess] Comments on draft-dawra-idr-srv6-vpn-03

Robert Raszuk <robert@raszuk.net> Thu, 28 December 2017 17:14 UTC

Return-Path: <rraszuk@gmail.com>
X-Original-To: bess@ietfa.amsl.com
Delivered-To: bess@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5D9DE12D94A; Thu, 28 Dec 2017 09:14:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.398
X-Spam-Level:
X-Spam-Status: No, score=-1.398 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 RAPxKV0zpont; Thu, 28 Dec 2017 09:14:48 -0800 (PST)
Received: from mail-wr0-x236.google.com (mail-wr0-x236.google.com [IPv6:2a00:1450:400c:c0c::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9AA9612706D; Thu, 28 Dec 2017 09:14:47 -0800 (PST)
Received: by mail-wr0-x236.google.com with SMTP id 36so6450688wrh.1; Thu, 28 Dec 2017 09:14:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=drKq8GYbAElRuyHqLfoAKazbUPLzik4UNzdXNu+mV2A=; b=vePKSuQlMfKjSkYE8W+E+qVS+L7Fzxyf5qJYS12mK3cidSaQsYMoRCF8UtGfTGXEBs MLXIAE9m473/EKaCoZo/5XUEGwKMH/rEu6ur1wKT7gbv+VWoNhKmcSsXUrHeUHjO+spL oK6JtnCzr7DPEYcdxdr6cI7afIu/lGPk+LunYQRpxWMyC19NuIBjRVzOb86KlUYJV2ra aaT/7cHbPBU3q1WISoAC7nB5YgtAxMaZJKgVtcJqU3cqLBCeQR6ed9aDTS4f9rnh1n13 1nz2kY1q90o2YuDH416mWHzjFKZzKO4OfbAk8V34pIfa/4Nuqi7ZtE6NwRuE161Kc+HM 73sw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=drKq8GYbAElRuyHqLfoAKazbUPLzik4UNzdXNu+mV2A=; b=RUVsN4rkX2SKz/91aqyXRrnuZDr4HgLgGGrDMcPzTtdok99KaYlngsJJ2qYioCpUTk lkgTt2qHgB8iCDtrhaLJOciexNZ3Vt27Hc7LcgaUgMx2hkrwoNP5dmHAo9Jpg8URUFUX SD7VveTZddi1t/0Cp53gMsY71EyQD4lKF/YYDye+tpv4PPsCCcoV78cXRlSeTg70UZNw yMxc+Zt64Qfk/O3A9J9T1kOe5SOlL3rLgUnuEe0DywhYoCHKWhfjHtMEua9GAu5F91vD 5dB/xO+5FdRfchwieFYTmrZHIJxgBIQ1DxDU9o16J1vLx5xyoUY+IEsX1/w8piLfipIg uR9Q==
X-Gm-Message-State: AKGB3mJSUMVWqSPX2K2Hh7E5x02UZ74bq6sZ9eVoXeMZEo6znDSN8Uof 2Hc7+J0rb7s86p1r3QF6CQfVS4x4ipOAD1DyKpY=
X-Google-Smtp-Source: ACJfBouQEN7rADsPwdZXL7kBs0HUY1YgIMZNBmycmNbFg3YjPipfhKYoxXsTPUMAu/XAFbbFyzuHPN7hPyZ9U+WTU34=
X-Received: by 10.223.201.6 with SMTP id m6mr29639645wrh.107.1514481285799; Thu, 28 Dec 2017 09:14:45 -0800 (PST)
MIME-Version: 1.0
Sender: rraszuk@gmail.com
Received: by 10.28.54.217 with HTTP; Thu, 28 Dec 2017 09:14:45 -0800 (PST)
In-Reply-To: <afb80dad-4f6a-332f-bb3a-4641a3c61a77@juniper.net>
References: <afb80dad-4f6a-332f-bb3a-4641a3c61a77@juniper.net>
From: Robert Raszuk <robert@raszuk.net>
Date: Thu, 28 Dec 2017 18:14:45 +0100
X-Google-Sender-Auth: Od0opGjXjutj55PQN9OnRVWmIlA
Message-ID: <CA+b+ER=BROA4HMoJZ8LyG_=J5YpAa7bFQ3YZEJrm6HqB41gC0g@mail.gmail.com>
To: Eric C Rosen <erosen@juniper.net>
Cc: "bess@ietf.org" <bess@ietf.org>, draft-dawra-idr-srv6-vpn.authors@ietf.org, spring@ietf.org
Content-Type: multipart/alternative; boundary="089e082f9bbc0f22b9056169a70e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/bess/_4BWpJfVFNZuJOcZpjuFGxLmJfw>
Subject: Re: [bess] Comments on draft-dawra-idr-srv6-vpn-03
X-BeenThere: bess@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: BGP-Enabled ServiceS working group discussion list <bess.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bess>, <mailto:bess-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bess/>
List-Post: <mailto:bess@ietf.org>
List-Help: <mailto:bess-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bess>, <mailto:bess-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 Dec 2017 17:14:51 -0000

Hi Eric,

A lot of your comments are an indication that you treat SID to be IPv6
address fully responsible for demux to proper VRF or CE. This was never the
intention.

Imagine egress PE having /64 loopback. Then you have remaining 64 bits to
put there a 20 bit VPN label (as we know it :) and even much more then
that. You can attach new arbitrary new functions to this single "VPN SID".

And further notice that this has no bearing on SID being routable or not.
Only the first /64 bits of the dst address need to be routable in order for
forwarding packets to happen ... So by no means there should be a case to
have per vrf IPv6 address or per CE IPv6 address and make it fully /128
routable.

Happy New Year !
Robert.


On Thu, Dec 28, 2017 at 5:44 PM, Eric C Rosen <erosen@juniper.net> wrote:

> Following are a few comments (look for lines beginning ****) on
> draft-dawra-idr-srv6-vpn-03.  The name of the draft notwithstanding, I
> think this is clearly a draft that falls within the scope of BESS, so I've
> sent my comments to the BESS list. (Also copying the 12 "authors" ;-))
>
> Section 1
>
> ...
>
>    To provide SRv6-VPN service with best-effort connectivity, the egress
>    PE signals an SRv6-VPN SID with the VPN route.  The ingress PE
>    encapsulates the VPN packet in an outer IPv6 header where the
>    destination address is the SRv6-VPN SID provided by the egress PE.
>    The underlay between the PE's only need to support plain IPv6
>    forwarding [RFC2460].
>
> **** This suggests that an IPv6 address has to be assigned to each VRF (for
> **** per-VRF "labeling"), or even to each CE (for per-CE labeling).
> **** Presumably these would be taken from an IPv6 prefix owned by the
> **** advertising PE?  Or not?
>
> **** If those addresses are routable, doesn't this create a security issue
> **** as discussed in RFC 4023 Section 8.2?
>
> Section 3
>
> ...
>
>    For egress-PEs which supports SRv6-VPN advertises an SRv6-VPN SID
>    with VPN routes.  This SRv6-VPN SID only has local significance at
>    the egress-PE where it is allocated or configured on a per-CE or per-
>    VRF basis.
>
> **** The phrase "only has local significance" suggests that these SIDs are
> **** not routable. But later on there is a suggestion that they are
> **** routable, or at least that they might be.
>
> ...
>
>    In practice, the SID encodes a cross-connect to a
>    specific Address Family table (END.DT) or next-hop/interface (END.DX)
>    as defined in the SRv6 Network Programming Document
>    [I-D.filsfils-spring-srv6-network-programming]
>
> **** I'm not sure what is meant by "in practice".  Aren't these semantics
> **** NECESSSARY in order to provide the L3VPN service?
>
>    The SRv6 VPN SID MAY be routable within the AS of the egress-PE and
>    serves the dual purpose of providing reachability between ingress-PE
>    and egress-PE while also encoding the VPN identifier.
>
> **** Did you mean:
>
>    The SRv6 VPN SID MAY be routable all along the path from the ingress-PE
>    to the egress-PE, and if so, MAY serve the dual purpose of providing
>    reachability between ingress-PE and egress-PE while also encoding the
> VPN
>    identifier.
>
> **** Though I guess if the SID is routable only in the egress AS, one could
> **** tunnel to an entry point of that AS and then route within the AS based
> **** on the SID.  (Of course this amplifies the spoofing problem discussed
> **** in Section 8.2 of RFC 4023.)
>
> **** So there are a number of options:
> **** - not routable
> **** - globally routable
> **** - routable only within egress AS
>
> **** If the intention is to allow all those options, please explain the
> **** signaling that lets the ingress PE know which option to use.  Or is
> the
> **** intention that this is known a priori (i.e., via provisioning)?
>
>    To support SRv6 based L3VPN overlay, a SID is advertised with BGP
>    MPLS L3VPN route update[RFC4364].  SID is encoded in a SRv6-VPN SID
>    TLV, which is optional transitive BGP Prefix SID
>    attribute[I-D.ietf-idr-bgp-prefix-sid].  This attribute serves two
>    purposes; first it indicates that the BGP egress device is reachable
>    via an SRv6 underlay
>
> **** Whether the egress PE is reachable via an SRv6 underlay has nothing to
> **** do with the presence or absence of the SRv6-VPN SID TLV.  The presence
> **** of that TLV really only means that the egress PE can handle the SRv6
> **** encapsulation for L3VPN.
>
>    and the BGP ingress device receiving this route
>    MAY choose to encapsulate or insert an SRv6 SRH, second it indicates
>    the value of the SID to include in the SRH encapsulation.  For L3VPN,
>    only a single SRv6-VPN SID MAY be necessary.
>
> **** I don't understand the phrase "only a single SRv6-VPN SID MAY be
> **** necessary".
>
>    A BGP speaker supporting an SRv6 underlay MAY distribute SID per route
>    via the BGP SRv6-VPN Attribute.
>
> **** I think you mean "If a PE supports an SRv6 underlay, it may attach the
> **** BGP SRv6-VPN attribute to the VPN-IP routes that it originates".
>
>    If the BGP speaker supports MPLS based
>    L3VPN simultaneously, it MAY also populate the Label values in L3VPN
>    route types and allow the BGP ingress device to decide which
>    encapsulation to use.  If the BGP speaker does not support MPLS based
>    L3VPN services the MPLS Labels in L3VPN route types MUST be set to
>    IMPLICIT-NULL.
>
> **** Please provide a reference that specifies how you set the Label field
> **** of a SAFI-4 or SAFI-128 route to "implicit null".  I don't recall any
> **** such thing existing in RFC 3107, 4364, or 8277.
>
> **** If you mean "set to zero", I think that will generally be interpreted
> **** in a SAFI-4 or SAFI-128 route as "push on label 0 (explicit null)".
>
> **** If you mean "set to three" (the value defined in RFC 3032 to represent
> **** "implicit null"), I don't think the SAFI-4/SAFI-128 implementations
> **** generally interpret the value three in that manner.
>
> **** I'm not really sure what you're trying to do here. There are at least
> **** four cases to consider:
>
> **** 1. For the case where the backbone doesn't have MPLS, there is no harm
> **** in saying "set the label to zero".
>
> **** 2. For the case where the backbone supports both MPLS and SRv6, and
> **** some PEs support L3VPN both ways, while others support only MPLS-based
> **** L3VPN, then a real label needs to be put in.
>
> **** 3. For the case where the backbone supports both MPLS and SRv6, but a
> **** particular egress PE only supports SRv6, there needs to be some way to
> **** instruct the ingress PEs to use SRv6 and not MPLS. Perhaps the
> **** presence of the prefix-SID attribute with VPN-SID TLV is sufficient.
>
> **** 4. For the case where the backbone supports both MPLS and SRv6, the
> **** egress PE supports both for transit, but the egress PE only supports
> **** SRv6 for L3VPN, the label in the SAFI-1/SAFI-128 routes should be a
> **** value that will cause the egress PE to discard the packet.  If there
> **** happens to be an ingress PE that only supports the MPLS style of
> L3VPN,
> **** this will prevent the egress PE from misrouting MPLS packets that
> **** arrive from that ingress PE.  (This would be an odd, probably
> **** transitional, deployment.  But the draft isn't very explicit about
> just
> **** what combinations of MPLS and SRv6 it is supposed to support.)
>
> **** In any event, the draft would be better off specifying the actual
> label value
> **** to be included rather than saying "implicit null". This occurs several
> **** times in the draft.
>
> Section 3.1
>
> ...
>
>    SRv6-VPN SID is encoded as part of the SRv6-VPN SID TLV defined in
>    Section 2.  The function of the SRv6 SID is entirely up to the
>    originator of the advertisement.  In practice, the function may
>    likely be End.DX4 or End.DT4.
>
> **** Obviously, the behavior is not up to the originator, it MUST provide
> **** the functionality necessary to provide the behavior that would have
> been
> **** provided by the MPLS label(s).  Statements like this occur several
> **** times in the draft and should all be fixed.
>
> Section 4
>
> ...
>
>    Ethernet VPN(EVPN), as defined in [RFC7432] provides an extendable
>    method of building an EVPN overlay.  It primarily focuses on MPLS
>    based EVPNs but calls out the extensibility to IP based EVPN
>    overlays.  It defines 4 route-types which carry prefixes and MPLS
>    Label attributes, the Labels each have specific use for MPLS
>    encapsulation of EVPN traffic.  The fifth route-type carrying MPLS
>    label information (and thus encapsulation information) for EVPN is
>    defined in[I-D.ietf-bess-evpn-prefix-advertisement].
>
>    The Route Types discussed below are:
>
> **** After carefully counting up to five route types, the document then
> proceeds to identify eight route types ;-)
>
> **** And there are lots more on the way!
>
> Section 4.1.1
>
> ...
>
>    SRv6-VPN TLV MAY be advertised along with the route advertisement and
>    the behavior of the SRv6-VPN SID is entirely up to the originator of
>    the advertisement.  In practice, the behavior would likely be
>    Arg.FE2.
>
> **** This seems to require that a unique IPv6 address be assigned to each
> **** ES.  Is that the intention?  If so, then probably those addresses
> **** should not be routable.
>
> ...
>
> Section 4.3
>
> ...
>
>    An Inclusive Multicast Ethernet Tag route type specific EVPN NLRI
>    consists of the following [RFC7432] where:
>
>    o  BGP next-hop: IPv6 address of egress PE
>
> **** I don't think there is any reason for this document to specify the
> **** contents of the NH field of the IMET route.  The above doesn't make
> **** much sense anyway, as the term "egress PE" doesn't really make sense
> in
> **** the context of the IMET route, and the next hop can change as the
> route
> **** is propagated.
>
>    o  SRv6-VPN TLV MAY encode END.DX2/END.DT2M function.
>
>    o  BGP Attribute: PMSI Tunnel Attribute[RFC6514] MAY contain MPLS
>       implicit-null label and Tunnel Type would be similar to defined in
>       EVPN Type-6 i.e. Ingress replication route.
>
> **** Is the intention to prohibit the use of either P2MP tunnels or
> assisted
> **** replication in an SRv6 overlay?  That seems to be a consequence of the
> **** above.  If that's the intention, please say so explicitly and do not
> **** leave it as an inference.  If that's not the intention, then do not
> say
> **** what the tunnel type should be.
>
>    The format of PMSI Tunnel Attribute attribute is encoded as follows
>    for an SRv6 Core:
>
>                   +---------------------------------------+
>                   |  Flag (1 octet)                       |
>                   +---------------------------------------+
>                   |  Tunnel Type (1 octet)                |
>                   +---------------------------------------+
>                   |  MPLS label (3 octet)                 |
>                   +---------------------------------------+
>                   |  Tunnel Identifier (variable)         |
>                   +---------------------------------------+
>
>    o  Flag: zero value defined per [RFC7432]
>
> **** The EVPN specs (of which RFC 7432 is not the only one) use five or six
> **** of the PMSI tunnel attribute flags.  This spec should not say to set
> **** the flags to zero, unless it is meant to prohibit the use of any
> **** function requiring the flags.
>
>    o  Tunnel Type: defined per [RFC6514]
>
>    o  MPLS label: Implicit-Null
>
> **** MPLS label should be zero; in the PMSI Tunnel attribute, it is clear
> **** that zero means "no label is specified".
>
>    o  Tunnel Identifier: IP address of egress PE
>
> **** This makes no sense when P2MP tunnels are used.
>
> **** For IR, the tunnel identifier is the identifier of the PE originating
> **** the route, per RFC 7432 section 11.2.
>
> **** Note that this will require that a unique IPv6 address be assigned to
> **** each Broadcast Domain; that should be stated explicitly.
>
> **** In a draft entitled " BGP Signaling of IPv6-Segment-Routing-based VPN
> **** Networks", it would be nice if the following little details were
> **** mentioned explicitly:
>
> **** - In L3VPN, an IPv6 address must be assigned to each VRF (or to each
> ****   VRF interface)
>
> **** - In EVPN, an IPv6 address must be assigned to each ES.
>
> **** - In EVPN, an IPv6 address must be assigned to each BD.
>
> **** It would also be nice if multicast were covered in both MVPN and EVPN.
>
> ...
>
> 6.  Implementation Status
>
>    The SRv6-VPN is available for SRv6 on various Cisco hardware and
>    other software platforms.
>
> **** Does it provide the full set of L3VPN/EVPN features? If not,
> **** what subset of features are supported?  Does it support
> **** transitional scenarios without relying on non-standard
> **** behaviors?
>
> ...
>
> 7.  Error Handling of BGP SRv6 SID Updates
>
>    When a BGP Speaker receives a BGP Update message containing a
>    malformed SRv6-VPN SID TLV, it MUST ignore the received BGP
>    attributes and not pass it to other BGP peers.  This is equivalent to
>    the -attribute discard- action specified in [RFC7606].  When
>    discarding an attribute, a BGP speaker MAY log an error for further
>    analysis.
>
> **** If the attribute is discarded, and there is no label (or the backbone)
> **** doesn't support MPLS, what will happen to the VPN traffic? Can it be
> **** misdelivered outside the VPN?  That wouldn't be very good.
>
>
>
>
>
>
>