[Idr] Re: draft-decraene-idr-nlri-error-handling-00.txt

Robert Raszuk <robert@raszuk.net> Fri, 17 October 2025 17:56 UTC

Return-Path: <robert@raszuk.net>
X-Original-To: idr@mail2.ietf.org
Delivered-To: idr@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id B893F760FBF9 for <idr@mail2.ietf.org>; Fri, 17 Oct 2025 10:56:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=raszuk.net
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pyCnBRue3G30 for <idr@mail2.ietf.org>; Fri, 17 Oct 2025 10:56:25 -0700 (PDT)
Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 1026A760FBE7 for <idr@ietf.org>; Fri, 17 Oct 2025 10:56:25 -0700 (PDT)
Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-63c4b41b38cso55892a12.3 for <idr@ietf.org>; Fri, 17 Oct 2025 10:56:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raszuk.net; s=google; t=1760723784; x=1761328584; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EPo3yrDCRiM9EmGRJafSOwHclkX/yP8XS+KImV5DRZs=; b=F2iLNc+0L/7Q8b6y/YkuLUPPr8+9xSuLvkDfiJmQqFskkqx4wQ+ee5d5FKsXJUYfsP yqvSZDBOqmE3lxuJOP9IQ9Dbc2wmHQid5mAOJjNS/W2FPOl6+4Ov5uslCxqs4Nvywc8b hA7kwKwF7bJhIVVuM7ZlipBoyXMZrVtqCAoHLQrjey9Jy8kH6/Z9UfvWBxR52KHuKyxN lxv8Shz1AcTan0Y7WHKd5NCUFKUTol4NR5becpsBk4RqC4ewiZDPMKVkGBqkYVzQcKD7 Jz69lKpoJyDQ7xmBM3Zx/c27QO7jW0UVWb9VhRJLVxTGz6XzBBSC12CYR4/zjze2z2xG QFVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760723784; x=1761328584; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EPo3yrDCRiM9EmGRJafSOwHclkX/yP8XS+KImV5DRZs=; b=CWgSIEaPUoFy5IyFkFZca4Lz05l0wyZFtm9uFM6vianZn44Ao+bICA203VCWV9HmFa xPbqNwVxvMWwT+9EfRX0fVHMUDIxTH2AdgK9IP1/cSalIHNN4MMlbtRyO5pe4HMdDZS+ CudkR0+/Laripd3MrswszeyLTjwh+Lh4tmcdLE8kdosYxvdwJqT0ED22Jk3Ortk4JOky hTddX7mPpihsUc4tWK0LJqGRZOMDxE3QS1jSLGi9R+VqBNIP5cR3KfIJRjW208YMFKMB w4v7xNGd5Kv7Jd/4WEQfRYS0YlbPN18vcJ7ONFsUFXml25SeTsEeumkPKDjNOOITbSBW WlzQ==
X-Forwarded-Encrypted: i=1; AJvYcCX9do+ZNsF1iWyiPtztq9vG6jScldcDaIqUACHxm2zxi4Y9W03On+IHlDeAk+wmImuJqdk=@ietf.org
X-Gm-Message-State: AOJu0Yw6s0TLk5qRvPdbh/h30G1oh6v4aacSxCMOrC6lQpzMi6CYIEfW 3U4ueoSHIclTCjNxolna9QCi3THc90j2eEZVrOeHxkd8Z5hRf1FUnrZJKdw0/dX1hOv32zxddh2 EFz2gTStcyOB8MXoINTaHmsB5ZViHynojREi5d58sfw==
X-Gm-Gg: ASbGncuwyd8UImqMY1qKEYQvLiX045I5igkSjuv9H0s/IZCzs05YMS3HqyCUa/q63vz 5U3T636m4pj8xBhNli9dKMDObHEl9e8hlbqukrVN7Aa/HA3d8Ss3IcNYJCmzf3ZyN6/7ph2Gh1k mmNyswvTUAahLxhLfknbRGYMPivWP0nfjx6D1Uj6Ayq2HnsL9oJ0B1M8d1DNtnXqOYeAbbX+hv4 EKwTO5AOx1ZeaSoWgkbyZBI3QzifDuErfGuQH4lKJJYyiCSaghL6k3v8Qb+WV3wJfIDl5A=
X-Google-Smtp-Source: AGHT+IH6e3P0lhJbeJS9cqXOYFSxJMcicGZLuNgHwZGJIy7yxUw0s7JgyY9vYKjqoRSOX4U+05b/Rw3gqjBhh/67U1w=
X-Received: by 2002:a05:6402:1e95:b0:63c:18e:1dee with SMTP id 4fb4d7f45d1cf-63c1f6c0eccmr4202658a12.24.1760723783924; Fri, 17 Oct 2025 10:56:23 -0700 (PDT)
MIME-Version: 1.0
References: <176053803383.1109285.4613858825382469856@dt-datatracker-84f8f646b-tg6mn> <MR1P264MB4354CE655479696D589F8050F0E8A@MR1P264MB4354.FRAP264.PROD.OUTLOOK.COM> <CAPF+HwVb_Mb9C79SfVtTP=rxMjNK8CTEKOAFsXbx__8FwJ+RLw@mail.gmail.com> <AB42F105-6FD2-40C6-88DB-FDD33EF8A9BA@juniper.net> <CAPF+HwX_D5_Y88MQrerY+bPRY_V4QB=LG7nZY75skzntfT0G2g@mail.gmail.com> <F93E64FE-DE2C-47C6-B69F-267A69503140@juniper.net> <CAPF+HwX9VVNk26E-6NFphy-FV6vtyDkVBFQNPdghGw4yJCudfw@mail.gmail.com> <5656EE4B-764B-46EF-BE6A-7D2E657DDA6F@juniper.net> <CAOj+MMFT3qOENbcJ5Ctp9PQxhsrgzPM852_sOZTUWq83kZqZ6g@mail.gmail.com> <MR1P264MB4354DE951D947A766EDBFE8FF0F6A@MR1P264MB4354.FRAP264.PROD.OUTLOOK.COM>
In-Reply-To: <MR1P264MB4354DE951D947A766EDBFE8FF0F6A@MR1P264MB4354.FRAP264.PROD.OUTLOOK.COM>
From: Robert Raszuk <robert@raszuk.net>
Date: Fri, 17 Oct 2025 19:56:12 +0200
X-Gm-Features: AS18NWDtO9iVAVDmCgkrLUhYFpGAuTYC4rQPG6LAlrIgmxO_pAEo3-0U7TBBffU
Message-ID: <CAOj+MMGypHqRt5OHWW62P-_PEiGhAJ0DHNA33WNT2ZwUoN5-tg@mail.gmail.com>
To: bruno.decraene@orange.com
Content-Type: multipart/alternative; boundary="000000000000b04eaf06415e731a"
Message-ID-Hash: NC7BQCC6A5FOUWYZVUE4XJ6JWOVPN24D
X-Message-ID-Hash: NC7BQCC6A5FOUWYZVUE4XJ6JWOVPN24D
X-MailFrom: robert@raszuk.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-idr.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: idr <idr@ietf.org>, "draft-decraene-idr-nlri-error-handling@ietf.org" <draft-decraene-idr-nlri-error-handling@ietf.org>, John Scudder <jgs=40juniper.net@dmarc.ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Idr] Re: draft-decraene-idr-nlri-error-handling-00.txt
List-Id: Inter-Domain Routing <idr.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/SW3TI1sHiLYuyXTAwq5jnrpEgww>
List-Archive: <https://mailarchive.ietf.org/arch/browse/idr>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Owner: <mailto:idr-owner@ietf.org>
List-Post: <mailto:idr@ietf.org>
List-Subscribe: <mailto:idr-join@ietf.org>
List-Unsubscribe: <mailto:idr-leave@ietf.org>

Hi Bruno,

Ok I get your point that the issue may be on the receiver and not on the
sender in parsing MP_REACH_NLRI. Indeed I was mainly talking about the
issue on the sender side, badly composing the MP_REACH_NLRIs.

Btw are you advocating to be sending TAW for all AFI/SAFIs ? Even those
which do not contain next hop as part of MP_REACH ? If so what would be the
rationale for doing such MP_REACH duplication ?

Example RFC8955.

Thx,
R.



On Fri, Oct 17, 2025 at 3:38 PM <bruno.decraene@orange.com> wrote:

> Hi Robert,
>
>
>
> *From:* Robert Raszuk <robert@raszuk.net>
> *Sent:* Friday, October 17, 2025 12:32 AM
> *To:* John Scudder <jgs=40juniper.net@dmarc.ietf.org>
> *Cc:* Donatas Abraitis <donatas.abraitis@gmail.com>; DECRAENE Bruno
> INNOV/NET <bruno.decraene@orange.com>; idr <idr@ietf.org>;
> draft-decraene-idr-nlri-error-handling@ietf.org
> *Subject:* Re: [Idr] Re: draft-decraene-idr-nlri-error-handling-00.txt
>
>
>
> Hi John,
>
>
>
> So in your example you are pointing out that the sender can not
> correctly encode the next hop in the MP_REACH.
>
>
>
> Well sorry to say but this to me is good enough of a reason to drop a
> session with such a sender ASAP.
>
>
>
> Note that you and Bruno are taking a very myopic view on the network.
>
>
>
> [Bruno] Thanks ( 😉 )
>
>
>
> You think that dropping the session is a disaster and that it always
> impacts customers given the network is serving.
>
>
>
> [Bruno] No. I’m saying that dropping the session does sometimes impact
> customers. Sometimes a very large base.
>
> I’m assuming that you see the difference between both assertions.
>
>
>
> Well this is IMO quite wrong conclusion.
>
>
>
> Properly constructed network is usually not a single vendor shop and
> control plane information - especially BGP - is distributed over different
> vendor control plane nodes with multiple sessions in place. Hence you
> should have more than one way of getting your BGP overlay information
> between egress and ingress nodes to your domain.
>
>
>
> [Bruno] How does that help?
>
> You are considering one assumption: the BGP error I due to your BGP peer.
> (so a diverse one will help).
>
> There are other assumptions. E.g. the BGP update is valid and the receiver
> believes there is an error. E.g. A BGP LU route is advertised with a label
> stack of more than one label. The one seeing the error is the ingress node.
> Having diverse signaling does not help.
>
>
>
>
>
> With that bigger picture in mind please notice that dropping a single BGP
> session in the vast majority of modern implementations usually has zero
> (well cost of local pointer switch so single ms) negative effect on the
> data plane and on the customer transit/services offered.
>
>
>
> [Bruno] Again, I think you are considering a subset of the cases. See
> above.
>
>
>
> I think we need to take a look from this angle as well when considering
> adoption or not of this proposal.
>
>
>
> [Bruno] Let’s take a look from all angles. Not just “this angle”.
>
>
>
> We could discuss error handling considerations, but this is a large and
> complex topic, with different points of views. Usually tradeoffs are
> involved, so there is no easy answer (and whatever the choice taken, this
> can backfire)
>
>
>
> Example of two points of view:
>
>    1. Box/BGP session centric: I’m receiving a wrong message. What a
>    pathetic implementation is running  on my neighbor! Hopefully, I’m a smart
>    implementation and  _*I*_ detected the error. Since the neighbor
>    implementation is bad, and I can’t trust that session, let’s kill it. (the
>    session)
>    2. Global network centric. I’m receiving a wrong message. As a first
>    reaction, I could indeed shut down that session (since a not so myopic
>    operator probably configured redundant sessions with redundant codes, and
>    the not so myopic customer is dual homed to another PE). But thinking a bit
>    more: what makes me think that my redundant session will not receive the
>    same message? That the redundant PE will not receive the same message? That
>    all PE will not receive the same message (it’s an IBGP session, so even if
>    it’s not a link state IGP, it’s likely a goal to simulate a full mesh where
>    everyone receives all routes (with same attribute)). With this is mind, if
>    I take the decision to shut down that session, all other PEs may equally
>    take the same decision. Is that really such a smart move?
>
> On top of that, the incorrect message may come from an attacker. In such
> case, taking an action which increases the scope or consequences is
> debatable as it gives the attacker a bigger attack vector. Better try to
> ignore or minimize (even just creating local states, consuming/leaking
> memory… may be exploited).
>
>
>
>
>
> Hopefully, I’ve shared a different angle. Even if not, I hope it’s clear
> that I’ve not been convinced by your arguments to support your claim that
> [John and I]  “are taking a very myopic view on the network”
>
>
>
> Kind regards,
>
> --Bruno
>
>
>
>
>
> Kind regards,
>
> Robert
>
>
>
> On Thu, Oct 16, 2025 at 5:59 PM John Scudder <jgs=
> 40juniper.net@dmarc.ietf.org> wrote:
>
> Hi Donatas,
>
>
>
> If the MP_REACH_NLRI is fine, we do nothing with the TAW and process the
> MP_REACH_NLRI as normal.
>
>
>
> If, during processing of the MP_REACH_NLRI, we discover an error [1], then
> we extract the keys from the TAW and use them to drive treat-as-withdraw
> behavior [2], instead of resetting the session as RFC 7606 tells us to.
>
>
>
> In reviewing RFC 7606 just now, I see we can construct a rather
> straightforward example of a malformation that would be overcome by TAW.
> Let’s use Bruno’s diagrams, and fill in some of the fields:
>
>
>
> Multiprotocol Reachable NLRI - MP_REACH_NLRI (Type Code 14)
>
>         +---------------------------------------------------------+
>
>         | Address Family Identifier (2 octets)             0x0002 |
>
>         +---------------------------------------------------------+
>
>         | Subsequent Address Family Identifier (1 octet)     0x01 |
>
>         +---------------------------------------------------------+
>
>         | Length of Next Hop Network Address (1 octet)       0xff |
>
>         +---------------------------------------------------------+
>
>         | Network Address of Next Hop (variable)                  |
>
>         +---------------------------------------------------------+
>
>         | Reserved (1 octet)                                      |
>
>         +---------------------------------------------------------+
>
>         | NLRI1 (key1)                                            |
>
>         | NLRI2 (key2)                                            |
>
>         +---------------------------------------------------------+
>
>
>
> Above, I have not filled in beyond the “Length of Next Hop Network
> Address” field, since that’s where the error occurs, and the rest is not
> reliably determinable (7606 Section 7.11). I removed the “non-key”
> notations since this example uses plain IPv6 unicast, mostly to keep the
> example simple.
>
>
>
> Treat-As-Withdraw  (Type Code TBD1)
>
>
>
>         +---------------------------------------------------------+
>
>         | Address Family Identifier (2 octets)             0x0002 |
>
>         +---------------------------------------------------------+
>
>         | Subsequent Address Family Identifier (1 octet)     0x01 |
>
>         +---------------------------------------------------------+
>
>         | NLRI1 (2001:DB8::/32)                                   |
>
>         | NLRI2 (3fff::/20)                                       |
>
>         +---------------------------------------------------------+
>
>
>
> While we are trying to parse the MP_REACH_NLRI, we hit the absurd Length
> of Next Hop Network Address field, and therefore, RFC 7606 tells us we MUST
> reset the session. However, since we also have access to the TAW, we can
> confidently extract the two prefixes (“keys”) it carries, and proceed to
> apply treat-as-withdraw logic instead of resetting the session.
>
>
>
> I hope we don’t need to debate whether this particular example is likely
> to occur in the field — I concede it isn’t; as noted, I chose it because
> it’s simple, illustrates the point, and follows directly from unambiguous
> language in RFC 7606.
>
>
>
> HTH,
>
>
>
> —John
>
>
>
> [1] See RFC 7606 Sections 3.j, 5, and 7.11.
>
>
>
> [2] See RFC 7606 Section 2, third bullet.
>
>
>
> On Oct 16, 2025, at 9:45 AM, Donatas Abraitis <donatas.abraitis@gmail.com>
> wrote:
>
>
>
>
>
> *[External Email. Be cautious of content]*
>
>
>
>
>
> >It’s a sort of a duplicate MP_UNREACH attribute
>
>
>
> Okay, let's say we received this one (followed by MP_REACH_NLRI):
>
>
>
> Treat-As-Withdraw  (Type Code TBD1)
>
>
>
>         +---------------------------------------------------------+
>
>         | Address Family Identifier (2 octets)                    |
>
>         +---------------------------------------------------------+
>
>         | Subsequent Address Family Identifier (1 octet)          |
>
>         +---------------------------------------------------------+
>
>         | NLRI1 (key1)                                            |
>
>         | NLRI2 (key2)                                            |
>
>         +---------------------------------------------------------+
>
>
>
> What should we do with MP_REACH_NLRI then? My question is, what problem
> solves the "duplication"? :)
>
>
>
>
>
> On Thu, Oct 16, 2025 at 4:35 PM John Scudder <jgs@juniper.net> wrote:
>
> > On Oct 16, 2025, at 9:26 AM, Donatas Abraitis <
> donatas.abraitis@gmail.com> wrote:
> >
> > Correct me if I'm wrong... So, this TAW attribute is sort of a duplicate
> MP_REACH attribute,
>
> Almost, you left out the “UN". It’s a sort of a duplicate MP_UNREACH
> attribute:
>
>                 The format of the Treat-As-
>    Withdraw attribute is the same as the format of the MP_UNREACH_NLRI
>    as defined in Section 4 of [RFC4760].
>
> > or what actually? I still don't understand how it solves the parsing
> problem
>
> The problem it’s meant to solve is if the MP_REACH_NLRI can’t be parsed
> for some reason:
>
>    However, as indicated in Section 3 of [RFC7606], treat-as-withdraw
>    can only be used if the entire NLRI field of the MP_REACH_NLRI
>    attribute is successfully parsed.  This typically means parsing
>    errors in MP_REACH_NLRI cannot be handled by any means short of
>    session reset.
>
> In code bases I’m aware of, the MP_UNREACH_NLRI generation code path is
> simpler than the MP_REACH_NLRI code path, and of course we’ve already
> discussed that the MP_UNREACH_NLRI content is sometimes simpler than the
> MP_REACH_NRLI content. The hypothesis that underpins the draft is that
> simpler => less likely to contain an error. This generally seems like an
> uncontroversial assumption. There is of course no guarantee (the entire
> draft is essentially about how to handle bugs, so this is true by
> definition).
>
> > (I might be completely dumb) :)
>
> On the contrary, your comments, Robert’s, and others, illustrate that we
> need to work harder to be clear. (And also need to fix the bug that Robert
> called out!) So, thank you!
>
> —John
>
>
>
> --
>
> Donatas
>
>
>
> _______________________________________________
> Idr mailing list -- idr@ietf.org
> To unsubscribe send an email to idr-leave@ietf.org
>
> ____________________________________________________________________________________________________________
> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
> Thank you.
>
>