Re: [Lsr] Flow Control Discussion for IS-IS Flooding Speed

tony.li@tony.li Wed, 19 February 2020 07:52 UTC

Return-Path: <tony1athome@gmail.com>
X-Original-To: lsr@ietfa.amsl.com
Delivered-To: lsr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A4E7B1200D8 for <lsr@ietfa.amsl.com>; Tue, 18 Feb 2020 23:52:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.399
X-Spam-Level:
X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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 ppQg0jEFY5Kf for <lsr@ietfa.amsl.com>; Tue, 18 Feb 2020 23:52:46 -0800 (PST)
Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) (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 F0DBA1200CD for <lsr@ietf.org>; Tue, 18 Feb 2020 23:52:45 -0800 (PST)
Received: by mail-pj1-x1029.google.com with SMTP id dw13so2215700pjb.4 for <lsr@ietf.org>; Tue, 18 Feb 2020 23:52:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=8Ns8GOIdgBXRM8aEMyqgTjuIo7ezdDT/1jUDVL5NaIE=; b=X4vY8osbgwIoS5RXGND0u/qBqXigLbO/8HGtvkFt972rP17/GG26uFwmNyjynbl4Gr MBnhtmj8IzC3k6l2a/WLKcJlUMeSZpEJ0wOiKWMp8BSRxO+PIkQPcKVP+y3Cicfn5OP1 ysFB1qwA3IKAr1/r5QObjnWODpGxrYvz+MBOFn2TQdU8yInKnFllr/OYOncnl3bPyVmw +vHYKF8AQ1Jj8/g5jBvgHQWBgSXMPK2/W40mmXmLTAGSgYj21eaad2n+EJTDhaPBIyqe Sm+ZDaFo08jQDSPrgn8Lu3VT99cHAqGIwxGb3IrvtpIBnGDgiURMCMoknMO6IcESM8nP oPTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=8Ns8GOIdgBXRM8aEMyqgTjuIo7ezdDT/1jUDVL5NaIE=; b=ktQwxznfQjb5dU3ZEMEkczIGgFRGYTTEAwzodPXfq14In5kSKSHEHdpvUme62pomNk 0I2O/9bPr1b7jbI1FzPLeun+9mwy+LUelBAcQjVM6Gfwb4FZQxqZO9qiq3IVAoaAW/Ke 1GNPKzHdXdEpXXlCMYcE9B2wLsZopd/K/TaniTLgQvnT1gSX1MotmFHnn/cD5foeEAWX Gkzx0lG0OaEsrqYjWmZt7Azg+olA4zfX+RUL9zCociBfXs/cSCfnJzsMw2avSqOUOgXG lf/eHfraSfOzuBCARxd4OqrV5tXfMqeaYIdtWZMwmxcvn0PcATxeZMfOVYwY2co97sSj /R1A==
X-Gm-Message-State: APjAAAUgunVnbUIYn8CloIk7w1JcrMg04YytD93PNrYywC85EVTKuI3h DNn3dcHtsarSJTozLdiWOxU=
X-Google-Smtp-Source: APXvYqwFp76B/PhQeHtxCBMO7oFVYTtNRhN6ktI+z1Y3nntBwjw086TrRqYjvrKwBiZXk+k3Kquvfg==
X-Received: by 2002:a17:90a:cc04:: with SMTP id b4mr7390033pju.136.1582098765315; Tue, 18 Feb 2020 23:52:45 -0800 (PST)
Received: from [10.95.81.70] ([162.210.129.5]) by smtp.gmail.com with ESMTPSA id e11sm1453238pgj.70.2020.02.18.23.52.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Feb 2020 23:52:44 -0800 (PST)
Sender: Tony Li <tony1athome@gmail.com>
From: tony.li@tony.li
Message-Id: <ECB4DE38-2546-4AB9-A064-51A7F1A69617@tony.li>
Content-Type: multipart/alternative; boundary="Apple-Mail=_BEB677E9-F4AA-45F6-9C81-3C28B0E81D77"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Wed, 19 Feb 2020 18:52:39 +1100
In-Reply-To: <MW3PR11MB46191344EB5B1BA8395FE00DC1100@MW3PR11MB4619.namprd11.prod.outlook.com>
Cc: "lsr@ietf.org" <lsr@ietf.org>
To: Les Ginsberg <ginsberg@cisco.com>
References: <MW3PR11MB46191E81D5B22B454D8184A4C1100@MW3PR11MB4619.namprd11.prod.outlook.com> <6549B961-D8B9-462A-94D1-A91AAA454A16@gmail.com> <MW3PR11MB46197D562EB5F213DEA7D08AC1100@MW3PR11MB4619.namprd11.prod.outlook.com> <ADAD5324-AE0D-4091-8203-FCA7194092E4@tony.li> <MW3PR11MB46197C1E99A48AC2F6D0EAFAC1100@MW3PR11MB4619.namprd11.prod.outlook.com> <F23558B0-814E-434C-BEFA-DE08FB90774E@tony.li> <MW3PR11MB46191344EB5B1BA8395FE00DC1100@MW3PR11MB4619.namprd11.prod.outlook.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/lsr/Dg7EUIC6lsZq-zOeyFH0gOZRXoM>
Subject: Re: [Lsr] Flow Control Discussion for IS-IS Flooding Speed
X-BeenThere: lsr@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Link State Routing Working Group <lsr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lsr>, <mailto:lsr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lsr/>
List-Post: <mailto:lsr@ietf.org>
List-Help: <mailto:lsr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lsr>, <mailto:lsr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Feb 2020 07:52:48 -0000

Les,

> Overall, I think you are making  general statements and not providing needed specifics.


I’m sorry it’s not specific enough for you.  I’m not sure that I can help to your satisfaction.


> Maybe it’s obvious to you how a receiver based window would be calculated – but it isn’t obvious to me – so please help me out here with specifics.
> What inputs do you need on the receive side in order to do the necessary calculation?


Well, there can be many, as it depends on the receiver’s architecture. Now, I can’t talk about things that are under NDA or company secret, so I’m pretty constrained.  Talking about any specific implementation is going to not be very helpful, so I propose that we stick with a simplified model to start: a box with N interfaces and a single input queue up to the CPU.  The input queue is the only possible bottleneck.  Further, the avoid undue complexity (for the moment — it may return), let’s assume that the input queue is in max-MTU sized packets, so that knowing the free entries in this queue is entirely sufficient.  Let the number of free entries be F.

As previously noted, we will want some oversubscription factor.  For the sake of a simple model, let’s consider this a constant and call it O.  [For future reference, I suspect that we will want to come back and make this more sophisticated, such as a Kalman filter, but again, to start simply… ]

Now, we want to report the free space devoted to the interface, but derated by the oversubscription factor, so we end up reporting F*O/N. 

Is that specific enough?


> What assumptions are you making about how an implementation receives, punts, dequeues IS-IS LSPs?


None.


> And how will this lead to better performance than having TX react to actual throughput?


The receiver will have better information. The transmitter can now convey useful things like “I processed all of your packets but my queue is still congested”, this would be a PSN that acknowledges all outstanding LSPs but shows no free buffers.

 
> And please do not say  “just like TCP”. I have made some specific statements about how managing the resources associated with a TCP connection is not at all similar to managing resources for IGP flooding.
> If you disagree – please provide some specific explanations.


I disagree with your disagreement.  A control loop is a very simple primitive in control theory.  That’s what we’re trying to create.  Modulating the receive window through control feedback is a control theory 101 technique.


>  It can look at its input queue and report the current space.  ~”Hi, I’ve got buffers available for 20 packets, totalling 20kB.”~  
>  
> [Les2:] None of the implementations I have worked on (at least 3) work this way.


Well, sorry, some of them do.  In particular the Cisco AGS+ worked exactly this way under IOS Classic in the day.  It may have morphed.


> For me how to do this is not at all obvious given common implementation issues such as:
>  
> Sharing of a single punt path queue among many incoming protocols/incoming interfaces
>  
>  
> The receiver gets to decide how much window it wants to provide to each transmitter. Some oversubscription is probably a good thing.
> [Les2:] That wasn’t my point. Neither of us Is advocating trying to completely eliminate retransmissions and/or transient overload.
> And since drops are possible, looking at the length of an input queue isn’t necessarily going to tell you whether you are indeed overloaded and if so due to what interface(s).


Looking at the length of the input queue does give you a snapshot at your congestion level.  You are correct, it does NOT ascribe it to specific interfaces.  A more sophisticated implementation might modulate its receive window inversely proportional to its interface input rate.


> Tx side flow control is agnostic to receiver implementation strategy and the reasons why LSPs remain unacknowledged..


Yes, it’s ignorant.  That doesn’t make it better.  The point is to maximize the goodput.  Systems theory tells us that we improve frequency response when we provide feedback.  That’s all I’m suggesting.


>  
> Distributed dataplanes
>  
>  
> This should definitely be a non-issue. An implementation should know the data path from the interface to the IS-IS process, for all data planes involved, and measure accordingly.
>  
> [Les2:] Again, you provide no specifics. Measure “what” accordingly?


The input queue size for the data path from the given interface.


> IF I do not have a queue dedicated solely to IS-IS packets to be punted (and implementations may well use a single queue for multiple protocols) what should I measure? How to get that info to the control plane in real time?


You should STILL use that queue size.  That is still the bottleneck.

You get that to the control plane by doing a PIO to the queue status register in the dataplane ASIC.  This is trivial.


> If we are to introduce new behaviors, they must be helpful. Estimates that do not utilize the available information may be sufficiently erroneous as to be harmful (see silly window syndrome).
>  
> [Les2:] Again – you try to apply TCP heuristics to IGP flooding. Not at all intuitive to me that this applies – I have stated why.
>  



Please take a class in systems theory, analog electronics, or control theory.  Just stating that it does not apply does not make it true.

Tony