Re: [Idr] BGP Message level ACKs

Robert Raszuk <robert@raszuk.net> Sun, 12 March 2023 15:19 UTC

Return-Path: <robert@raszuk.net>
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 2AE4CC14CE44 for <idr@ietfa.amsl.com>; Sun, 12 Mar 2023 08:19:52 -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, HTML_MESSAGE=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=raszuk.net
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 e8CGmlo3hWs1 for <idr@ietfa.amsl.com>; Sun, 12 Mar 2023 08:19:47 -0700 (PDT)
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) (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 E6414C14F738 for <idr@ietf.org>; Sun, 12 Mar 2023 08:19:47 -0700 (PDT)
Received: by mail-wm1-x32a.google.com with SMTP id fm20-20020a05600c0c1400b003ead37e6588so9262721wmb.5 for <idr@ietf.org>; Sun, 12 Mar 2023 08:19:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raszuk.net; s=google; t=1678634386; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rQdlgIwLBllVF5hTIVsM5kMadjPdAVVSvdxBD5u8SdU=; b=BcRbq/Qa1YNZNhmoEPwRewZp586yZc4rgY+GUV9YxYkPr7kvraavoRkienorhDJq/U UZmRYhQKR8P3WlIYRRHTrtoOtOdJzqdXxIJU95nTyZo4yJH90cWQHjYGytCeUGXm2a24 PSq1LLhSFbgbgyKdSSRaEHazKB4gr1E5zlyXjfoIypLU6v1GFdvF8ZcH0O/1h10P6sCw VFiUHlHzJZg5GUsjr4OxQTHakWrppvYjrJAntp3fCUImaVYnsV+6ywQl4J9AgLJjbRbx u2A+c0ZmHtV8UthAKMF9uWwBSubQDHuittyb6eduDqDgFzx3wxbg8Dmz8yVt4TToVEdb zyJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678634386; 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=rQdlgIwLBllVF5hTIVsM5kMadjPdAVVSvdxBD5u8SdU=; b=0dR7fD4UsNyEba4TiXIzsKeAI2E4JB1wbCijT0aGuy3dEND7nXPEUdjDI6AfPGXGFG LSRmAn/birq4VlEccm9NuCwXmnY2qfcOMsH1LEFA4iRVen6wpiYWsfQx28aryWpU1l9E y/zWDmcpcrOkyubS7BfKR/ASQNbi8cRMyN3EhezStyNFFTNQ5z8mw/luk5KGoEKsCBa/ NhJKgPXU++tNllp0TKRzuUZnzkbCmMim/A4cByhJKV6NwF5Ho2yq2B6EKyH+Zvbk8TPi rUctkWKL/DvXQVr2P4tf7MVgMxjDgPNh2xTyYf2FQP0FY+AkqhUJJRAMJlz/7KcsyomV karw==
X-Gm-Message-State: AO0yUKUKLWLvpoTIuuRjHuCqspYcqeI46K6PJB/B/PF3anp5lBL5nEI4 v7RY/dUKi4EtuL28z3GqkoberUDLPIG1nYDCh54T4bCwPCo7OiQwR5H4lQOw
X-Google-Smtp-Source: AK7set+Ks+jAlPffPyqmJDzxgEoT4V+Znd9umdMVpdKi4vJRSN42zTEJxCdoK/Q9Oo5hj8+vzXB7SUJ8k38cac9xq6k=
X-Received: by 2002:a05:600c:35c9:b0:3df:97cf:4593 with SMTP id r9-20020a05600c35c900b003df97cf4593mr2422724wmq.6.1678634385677; Sun, 12 Mar 2023 08:19:45 -0700 (PDT)
MIME-Version: 1.0
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> <679a80eb-1395-26bd-02a1-4d796879c247@gmail.com>
In-Reply-To: <679a80eb-1395-26bd-02a1-4d796879c247@gmail.com>
From: Robert Raszuk <robert@raszuk.net>
Date: Sun, 12 Mar 2023 08:20:10 -0700
Message-ID: <CAOj+MMGnMxY8Za1xwN6Jpkxfj9vsU0B8fB+-UXT+_kXNhta-UQ@mail.gmail.com>
To: Alejandro Acosta <alejandroacostaalamo@gmail.com>
Cc: idr@ietf.org
Content-Type: multipart/alternative; boundary="00000000000044321f05f6b586f0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/gEUjUzBHxmjwO6NZqZt13LK2fFI>
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 15:19:52 -0000

On Sun, Mar 12, 2023 at 5:57 AM Alejandro Acosta <
alejandroacostaalamo@gmail.com> wrote:

> Hello, it can be also added as a new BGP Capability
>
That is 100% correct. I did not spell out all the nitty gritty details
assuming the folks who look at it do understand the implications.

Kind regards,
Robert

On Sun, Mar 12, 2023 at 5:57 AM Alejandro Acosta <
alejandroacostaalamo@gmail.com> wrote:

> 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 listIdr@ietf.orghttps://www.ietf.org/mailman/listinfo/idr
>
> _______________________________________________
> Idr mailing list
> Idr@ietf.org
> https://www.ietf.org/mailman/listinfo/idr
>