<div dir="ltr"><div>Hi,</div><div><br></div><div>Thank you for your reply.</div><div><br></div><div>I believe I understand the original problem and how to overcome it very well. But my point  is different.<br></div><div><br></div><div>In the original thread where you discussed this issue with Ondrej, there was the following proposal:</div><div>> "For example bird can check that the hold timer proposed by a peer is at least 2 times greater than the local keepalive timer as in the attached patch"</div><div>> "I think that rejecting session when hold timer is smaller than local keepalive (so it is clear misconfiguration), and just a warning when it is smaller than 2*keepalive would be a good approach."</div><div>(<a href="https://bird.network.cz/pipermail/bird-users/2022-April/016070.html">https://bird.network.cz/pipermail/bird-users/2022-April/016070.html</a>)</div><div>And my point regarding minimum-hold-timer addresses exactly this. IMHO, it doesn't really make sense to compare local keepalive with remote holdtime and then reject the session for some reason. If you want to limit the value of holdtime that your router accepts, it makes more sense to set minimum-hold-timer for that, not keepalive.</div><div><br></div><div>For example, you could configure:</div><div>    hold 30;</div><div>    keepalive 10;</div><div>    minimum-hold-timer 30;</div><div>And this won't let your peer set hold timer lower than 30. And this makes the behavior pretty straightforward. <br></div><div><br></div><div>Otherwise, with approach like "hold timer proposed by a peer is at least 2 times greater than the local keepalive timer", you end up with some obscure logic, so that people would have to go read the source code to understand why the session is not establishing.<br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ср, 9 нояб. 2022 г. в 13:34, Alexander Zubkov <<a href="mailto:green@qrator.net">green@qrator.net</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I think this "knob" is somewhat orthogonal. Because this limits the<br>
possible values, but does not sets them. Currently you can set<br>
keepalive and hold timers and BGP peers choose the minimum hold timer<br>
among them. This setting is needed if you do not want you peer to set<br>
some low hold timer for you.<br>
But the original problem has other root. If you do not set keepalive<br>
timer - it is calculated from negotiated hold timer, but if you set it<br>
manually than it is fixed and if peer decides to use lower hold timer,<br>
that can break the mechanics silently. The easiest option to<br>
"workaround" it - is not setting keepalive timer by hand when you do<br>
not control the peer. Than it's value will always be lower than the<br>
hold timer (1/3 of it).<br>
Of course if you apply the patch, than you can use the keepalive timer<br>
to indirectly set the lower bound for the hold timer. But that looks<br>
weird. So if there is a demand for "minimum-hold-timer" option, it is<br>
useful by itself, IMHO.<br>
<br>
On Wed, Nov 9, 2022 at 11:25 AM Serge G via Bird-users<br>
<<a href="mailto:bird-users@trubka.network.cz" target="_blank">bird-users@trubka.network.cz</a>> wrote:<br>
><br>
> Hi,<br>
><br>
> Not sure if it's still relevant, but I just wanted to propose another approach. Instead of comparing configured keepalive with the hold timer received from a peer, it might be more straightforward to add another knob, e.g. "minimum-hold-timer". (as on Juniper <a href="https://www.juniper.net/documentation/us/en/software/junos/bgp/topics/ref/statement/minimum-hold-time.html" rel="noreferrer" target="_blank">https://www.juniper.net/documentation/us/en/software/junos/bgp/topics/ref/statement/minimum-hold-time.html</a>; Nokia also has similar knob)<br>
><br>
> Reason for this is that (the following is just my opinion) 'keepalive' only configures an interval for keepalive messages. And if we start using the value of keepalive timer to enforce some restrictions on peer's hold timer, this may be confusing.<br>
><br>
> In other words, "minimum-hold-timer" would more clearly indicate our restrictions on hold timers. If I see "minimum-hold-timer 30" in the configuration, I understand that this device has some limitations. If I see "keepalive 10", it doesn't tell me anything about restrictions, only that this device will send keepalives every 10 secs.<br>
><br>
> P.S. I haven't dealt with mailing lists before, so forgive me if I reply to the wrong thread. This is the thread I;m replying to: <a href="https://bird.network.cz/pipermail/bird-users/2022-April/016071.html" rel="noreferrer" target="_blank">https://bird.network.cz/pipermail/bird-users/2022-April/016071.html</a><br>
><br>
><br>
</blockquote></div>