A quick comment, just on some patches in there that I'm getting a sense
of deja vu on mostly. ;) Non-exhaustive.
On Fri, 11 Dec 2015, Donald Sharp wrote:
ospfd: Ensure deletion is clean
ospfd: Ensure that OSPF can send out multiple packets per thread
ospfd: Limit the number of interfaces serviced at one time
The first, I don't understand the point of - where is it possible that
oi can be valid, but not have an address? (What is the problem?)
The latter two need more justification. Note that if we start batching
packet writes, it becomes more difficult to interleave anything (other
things, or prioritising some kind of packets).
Again, what's the motivation for this? What was the original problem?
Was it hellos being blocked? Maybe then it'd be simpler to just put
hellos at the top of the queue instead, or just send them direct from
the timer?
To expand on the motivation thing:
The commit message should tell the story of why anyone should care about
this patch, and not dismiss it as churn. It should sell the patch:
"Here's this terrible problem the original code has! <ideally, back
this up with clear examples and even measurements if available>
Here's the high-level solution!
Here's a description of the implementation of that solution, how it
was intended at least!
(ideally) Here's the evidence that it works! <examples and
measurements, where possible, ideally>"
The more complex a patch, the more important it is that commit message
follows a structured:
"Problem
Solution
Implementation
Results"
form, and the more important it is to give details.
Giving a description of the "Implementation" is particularly useful to
signal to reviewers "I've actually re-read my patch carefully, so
there's a better chance that I've already caught any silly mistakes", as
well as provide a view of what the contributor /thought/ they
implemented - so reviewers can better catch any other silly mistakes
that got through.
Yeah, I know, everyone hates writing commit messages - doesn't the code
speak for itself? However, if we want to achieve throughput in getting
patches in, then we have to start offloading work from reviewers and
onto contributors. So, instead of:
"One line vague commit message"
And reviewers having to pick through a non-trivial patch and trying to
figure it out for themselves, contributors instead need to start
spending more time providing the "sales pitch" (problem, solution) and
the "map" ("here's exactly how the solution was intended to be
implemented") so that the reviewer doesn't have to spend as much time
mentally constructing the same.
*Contributors are only shooting themselves in the foot when they give
vague and/or terse messages.*
zebra: Add internal support for route tags
bgpd, lib, ospfd, zebra: Add ability to read/write tag value
bgpd, vtysh: Add support for route tags
ospfd, vtysh: Add support for Route tags
ripd, ripngd: add support for route tags
zebra: add support for route tags
Should this start by adding Piotr's patch first and then building on?
Also, does this reflect the comments on that patch set when submitted
again last year?
ospfd: 16.0 rfc2328 compliance
What was the motivation for this?
RFC3137 and 6987 both allow for routers to treat "infinite" cost links
as infinite, and the intent of the stub-router support definitely is to
wholly prevent any infinite cost link being used for transit. Quagga is
aggressive on that, but not incorrect in terms of those RFCs.
Was the motivation keeping the router accessible, even if the management
IP was also OSPF routed?
The commit message has slightly condescending language that probably
could have been avoided ("pretty simple huh"), and also is confused:
" In this case, the router will continue
to forward any traffic sent to it while these "max-metric" LSAs are
propagated through the network; at which point, the router can be
taken out of service."
This is irrelevant to that patch. The existing code allows for exactly
this, because it allows the local router to still calculate paths out,
and so continue to route any packets received out to and via other
non-max-metric routers.
Further, the spf_next stage of SPF is used to construct just the transit
SPF tree. In this, the link in a router-LSA is only used to calculate
the cost to *leave* a vertex V to reach the next candidate W. I.e.,
ignoring a max-metric link out of V should not affect reachability to V
itself (i.e. it's router-ID). So, ignoring max-metric links was a very
deliberately chosen way of implementing the "don't transit a
stub-router" part of RFC3137 (and still in 6987) while still keeping the
stub-router itself reachable.
The proposed patch opens up the possibility that ospfd /would/ be able
to start using max-metric routers for transit routes - which, to me,
definitely is *not* what the stub-router RFCs intend.
I've queried this patch a few times now, and not heard an explanation
back as to what the problem is that it's trying to solve. So, can we
have that explanation and discussion, or can you ensure this patch is
not re-submitted? :)
(E.g., it could be that what you really want is to set the metric to
0xfffe... or that something went wrong elsewhere in adding the router -
depends on what problem Cumulus saw that led to that patch; if there
wasn't an observed problem, then I wonder if it was due to someone being
over-hasty in thinking they saw incorrect code, but not understanding
SPF.. (which is not exactly trivial - not just in the code, but even
just the RFC)).
bgpd: Add maxmed command
MED is a terminally broken and unfixable "metric" (note: it fails to
meet any normal definition of metric), which can easily cause
pathological behaviours in iBGP. What BGP operator in their right mind,
once fully informed, would want to allow any neighbour ASes to inject
such a broken and dangerous metric into their iBGP?
My view then would be that MED needs to be deprecated from BGP - as
least its classic use. So should we really be encouraging further use of
it?
bgpd: cluster-id length equality for multipath
We had a discussion on that one already. The sentiment is really good,
and I'd even lift the cluster-list check up a lot higher, but it's a bit
dangerous on its own.
I've had a draft on something similar years ago, but I didn't think I
could put it into Quagga...
regards,
--
Paul Jakma [email protected] @pjakma Key ID: 64A2FF6A
Fortune:
Force it!!!
If it breaks, well, it wasn't working anyway...
No, don't force it, get a bigger hammer.
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev