Re: [Idr] BGP Message level ACKs

Alejandro Acosta <alejandroacostaalamo@gmail.com> Sun, 12 March 2023 12:57 UTC

Return-Path: <alejandroacostaalamo@gmail.com>
X-Original-To: idr@ietfa.amsl.com
Delivered-To: idr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4C805C14F748 for <idr@ietfa.amsl.com>; Sun, 12 Mar 2023 05:57:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3-c46PMJJroq for <idr@ietfa.amsl.com>; Sun, 12 Mar 2023 05:57:49 -0700 (PDT)
Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 60A36C14EB1E for <idr@ietf.org>; Sun, 12 Mar 2023 05:57:49 -0700 (PDT)
Received: by mail-qt1-x836.google.com with SMTP id z6so10719182qtv.0 for <idr@ietf.org>; Sun, 12 Mar 2023 05:57:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678625868; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=iS69HvoJsvrSQQ5bamDHqPDixJN/cWvgJzKWK6Yh4XI=; b=pGouxqF4vgXWBhzCU7lp30IVCEv02Yn+hwsCQcRGTsCJw5Vfns+qRHrQOwfEXT2xdL eDDTma/AhiZ9DCcaxPvszfwfYxtqOkuX2d5RuKpXozxBW44ICiuQUY1nrvxNeTNzH2OQ Ssi73RWAN6P8Nw5G+T+afDA+eZSTiyPw2TbMd8H3WZMOhrBIntMSq0MwruGi1v5SOJ1m WsptJkzcCH7SuFd2D0MSJsRAfbpfB+wyYqMNXrLKzEuGsS5GG01Se3fBDka9T7T7tIVS fL5kNbcZ69iYXtqDLtzHu4BafaXx4TrwpX4RFQtRTs/8xVz3QGBjlNfrSgTRrcuEAWiY k+Tw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678625868; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=iS69HvoJsvrSQQ5bamDHqPDixJN/cWvgJzKWK6Yh4XI=; b=YA2yT/1s+6DMzzm8gkIbAQmRrhbnsUsnd40JF5/U5WAQF0dc6RDa95Ue0Hkz5NRp/8 7UZh78D2qX8IyPC95MVLDoM07Tr+ajA32wiTaFPTktL2Ww7VWIV0FgMDJobg4lkfFHGP /ymz9RoFUgEcfYrIOFQsWkyzdXdOF2MKDr0gFZM5f8mTtr98z6xIr0udEQHYFPc6oDDv Pm5Asklxat6kT7R6TtE/mTJKhzX1Th9r6Vk7oqX/pIA3ot+eqimLb6yYcNQW4JIIed+D FGJgER+ghGUJtdy9Cr3PS3/r73iAAeL7Q9bzgtX3xs0ukgWgtyO7U+rM9nL2E2KrVT+4 7Zwg==
X-Gm-Message-State: AO0yUKWOIcPdopLr5PbX0yAgvVp8TXIKK30YtqoXhHc7zXWGb9QRJBkj sOcZb1jRtpk3xFiwdbQPnKWxKAuIe9/UavaO
X-Google-Smtp-Source: AK7set85RqpoOSr+7lSTjZYBEDpM7V2mCxokKwq/Xez+UBGbwizGEY0kuLWohuIA3Uu0qV/zpXqXVQ==
X-Received: by 2002:a05:622a:450:b0:3c0:3d68:540c with SMTP id o16-20020a05622a045000b003c03d68540cmr20356386qtx.65.1678625867731; Sun, 12 Mar 2023 05:57:47 -0700 (PDT)
Received: from ?IPV6:2001:470:5:592:80b:64f2:ad68:81ac? ([2001:470:5:592:80b:64f2:ad68:81ac]) by smtp.gmail.com with ESMTPSA id 29-20020a05620a049d00b007430494ab92sm3493950qkr.67.2023.03.12.05.57.46 for <idr@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 12 Mar 2023 05:57:47 -0700 (PDT)
Content-Type: multipart/alternative; boundary="------------hwlQVcGMHD72wtpNwVkSJxup"
Message-ID: <679a80eb-1395-26bd-02a1-4d796879c247@gmail.com>
Date: Sun, 12 Mar 2023 08:57:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0
Content-Language: en-US
To: idr@ietf.org
References: <CAOj+MME+xOzrA3e1CKmHR2JC+fiWkV4LinuL5ovA3L0tRWORRg@mail.gmail.com> <45816498-6F09-4135-ACB4-6E51683001C7@pfrc.org> <CAOj+MMFaJViRnRqwaLXHsBbcm6g5XtUuc5kh71ScZ9OKSoBNZw@mail.gmail.com> <CA+wi2hMjjPepoPnqUu0aMH4OtkezrC+sEV7YsmO92NnG-8+Q8Q@mail.gmail.com> <CAOj+MMEjBfdVK_uJ_B4CHr5suG0Zf7CSukqywTofkDMbimFEcA@mail.gmail.com> <CA+wi2hO0e5b7R49j9giz0bxF6d1EWddH+rYG7cSjMM4aSri49g@mail.gmail.com> <CAOj+MMH_3nwoyDE7GxNSa+fLPO2VD+SWCiGxmCem0s74-E17Ww@mail.gmail.com> <CA+wi2hNoG0Rt=06E7DC9DXGxiEZCvoD1JzKxJsiiyec17h8LYg@mail.gmail.com> <CAOj+MMHeV0jeDUSFVBQdzuS_BSC_z8+vTsFWzoEiXju15t+R0g@mail.gmail.com>
From: Alejandro Acosta <alejandroacostaalamo@gmail.com>
In-Reply-To: <CAOj+MMHeV0jeDUSFVBQdzuS_BSC_z8+vTsFWzoEiXju15t+R0g@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/97thZsM4KNUCRTSXOOMnW-UXPNc>
Subject: Re: [Idr] BGP Message level ACKs
X-BeenThere: idr@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Inter-Domain Routing <idr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/idr>, <mailto:idr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/idr/>
List-Post: <mailto:idr@ietf.org>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/idr>, <mailto:idr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Mar 2023 12:57:53 -0000

Hello, it can be also added as a new BGP Capability


On 9/3/23 11:58 AM, Robert Raszuk wrote:
>
> Well it can not be put in KEEPALIVE thread as by definition it would 
> be event triggered not periodic. So hardly would fit that thread.
>
> Cheers,
> R.
>
> On Thu, Mar 9, 2023 at 4:54 PM Tony Przygienda <tonysietf@gmail.com> 
> wrote:
>
>     aha, ok, yeah, and that problem is real as we know ... you should
>     have mentioned it.
>
>     yes, anything that reflects a token will do fine here ... unless
>     developers optimize and put that processing into the same bgp
>     keepalive thread. Then we are where we started  ;-)
>
>     -- tony
>
>
>     On Thu, Mar 9, 2023 at 4:48 PM Robert Raszuk <robert@raszuk.net>
>     wrote:
>
>         Tony,
>
>         > But I lost track frankly WHAT we're solving here with this
>         ACK you suggest ...
>
>         The reported problem is:
>
>         "The remote peer is not reading my BGP messages while TCP
>         works fine."
>
>         So if a remote peer can ACK that it got messages I send to it
>         (last 10 or last 100 etc ..) it solves the problem as defined.
>         In fact it solves it better then current proposal of using
>         single side socket buffer full timer.
>
>         I should have not thrown into this UDP as it changes the
>         objective - from informational nice to have ACK to something
>         much more complicated to provide transport reliability. That
>         was not the original aim.
>
>         Best,
>         R.
>
>         PS. If you like lets talk more about it face to face :)
>
>
>
>
>
>
>         On Thu, Mar 9, 2023 at 4:36 PM Tony Przygienda
>         <tonysietf@gmail.com> wrote:
>
>             simple update message "counter" does not change much of
>             anything really since the sender has to keep this
>             "counter" on the NLRI at which an update was sent to
>             understand which prefixes have been processed by the peer.
>             and all very amusing if you start to overlap with newer
>             updates containing the newer version of the same prefix.
>             Unless you think of "keeping all the updates stored on the
>             outbound until they 'acked" which would be a fantastic
>             attack vector by intentional or unintentional slow peers +
>             double with the TCP buffering already. With the
>             interesting stuff on top of when you give up on the peer
>             if it doesn't ACK in timely manner/at all ...
>
>             So, if you want to know what the peer on the other side
>             "processed" you will have no other choice but keep per
>             NLRI _something_ and possibly per peer (as I explained
>             with lots cleverness you can get away without per peer
>             possibly). Unless we're talking unreliable transport under
>             BGP which as I said seems to be solving wrong problems in
>             wrong layers. But I lost track frankly WHAT we're solving
>             here with this ACK you suggest ...
>
>             I still don't understand what "application consuymed the
>             data" _really_ means in terms of assurances the remote
>             system is giving you in terms of forwarding
>             behavior/convergence with other peers/whatever and hence
>             this "assurance" seems to be to have no semantics.
>
>             So, I chime out. Either this all has no real semantics and
>             possibly conflates multiple issues together or I don't
>             grok what it's all about.
>
>             motivation for having seq# on enhanced GR draft I get. we
>             do mark/sweeping kind of thingies on session re-establish
>             (which GR really is) and we have to sync up on versions of
>             state held (as optimization vs. re-sending e'thing). And
>             having the other side "confirming" really means
>             somethjing, namely FIB/RIB is programmed to this version
>             so no updates are needed. It's kind of simplified version
>             of the refresh-options (since it basically assumes there
>             is no GR-over-GR or endless updating on sender that makes
>             the process never stop?) but it burns basically 8 bits per
>             NLRI as well (assuming most likely there is never more
>             than one peer GR'ing either or maybe just one version for
>             all peers work, I didn't think that through yet). But
>             yeah, no free lunch ...
>
>             --- tony
>
>             On Thu, Mar 9, 2023 at 9:48 AM Robert Raszuk
>             <robert@raszuk.net> wrote:
>
>                 Tony,
>
>                 I think you are looking at this in a different way.
>
>                 So what you are likely considering is a very fine and
>                 detailed sequence number like approach. That's a lot
>                 of work indeed to accommodate it into current BGP
>                 outbound code - with tons of optimizations.
>
>                 I on the other hand was just thinking of reusing
>                 simple UPDATE message counter per peer. Some (I would
>                 say most) implementations I think have it already.
>
>                 The only sort of open issue is to synchronize the
>                 counters or at least clocks. Alternative would be to
>                 inject periodically a sequenced BGP MARKER message to
>                 tag local counter with remote counter and have the
>                 ACKs being MARKER triggered. Quite popular solution in
>                 completely asynchronous systems :)
>
>                 So to spec this out should be pretty straightforward.
>                 But again this email is to just probe the topic not
>                 volunteer to do it.
>
>                 Many thx,
>                 Robert.
>
>
>                 On Thu, Mar 9, 2023 at 8:45 AM Tony Przygienda
>                 <tonysietf@gmail.com> wrote:
>
>                     The problem is on the sender side. it has to keep
>                     track of whether an update has been ack'ed by a
>                     peer and that's in simple terms per peer per NLRI
>                     (modulo group discussion as usual). It can be
>                     tricked into per NLRI only but since NLRIs get
>                     packed differently, in different sequence towards
>                     different peers a high scale implementation will
>                     end up with at least per prefix. This is _very_
>                     expensive, particularly memory wise. Tricks can be
>                     played with rollovers like in
>                     https://datatracker.ietf.org/doc/draft-idr-bgp-route-refresh-options/
>                     but the logic isn't simple by any means and
>                     ultimately any solution may force implementations
>                     into structures to support this that are very
>                     inefficient for other parts of the implementation.
>
>                     Generally, shoving reliability of the transport
>                     into BGP is basically solving the wrong problem at
>                     the wrong layer just like shortcutting BGP to run
>                     on a user transport protocol brought nothing but
>                     lots of technical debt grief over the years.  Real
>                     problem is lack of control session layer that
>                     realizes underneath that transport went away and
>                     notifies up and/or allows transport for the
>                     session to come up again. It's only when a new
>                     session needs be established AFAIS that we need
>                     state sync which lands us in possibly GR corners
>                     or refresh corners again rather than trying to
>                     reinvent TCP on top of UDP in BGP by ACKs (I
>                     wonder when the first window size proposal starts
>                     to come in ;-)
>
>                     -- tony
>
>                     On Wed, Mar 8, 2023 at 11:52 PM Robert Raszuk
>                     <robert@raszuk.net> wrote:
>
>                         Hi Jeff,
>
>                             A fundamental challenge for bgp
>                             implementations is efficiently keeping
>                             versioning across peer-groups.*  Some
>                             implementations are friendlier to that
>                             idea than others, but the inconsistency in
>                             the ability to do that is one of the
>                             things that prevented this idea from
>                             progressing.
>
>
>                         I did not mean that it should touch update
>                         generation and replication. The ACKs which I
>                         had in mind would be operating way above this
>                         and simply periodically indicate to the sender
>                         that last N number of UPDATE messages got
>                         received by remote BGP process.
>
>                         N-being configured and possibly negotiated on
>                         the session bootstrap.
>
>                         Critical part of this is the time scale. If we
>                         are talking about the last 10 min or last 20
>                         min this would not be sufficient for helping
>                         to achieve reliable transport, but could be
>                         IMO more than sufficient to make sure UPDATE
>                         got to remote BGP I/O.
>
>                         So I am not sure if this is real distraction
>                         to the topic. I would rather call it
>                         exploration of alternative approaches. Just
>                         like punting the "issue" to telemetry ...
>                         avoiding need for any BGP code or FSM state
>                         machine change needed.
>
>                         Many thx,
>                         R.
>
>                         _______________________________________________
>                         Idr mailing list
>                         Idr@ietf.org
>                         https://www.ietf.org/mailman/listinfo/idr
>
>
> _______________________________________________
> Idr mailing list
> Idr@ietf.org
> https://www.ietf.org/mailman/listinfo/idr