On 11/10/2013 08:12 PM, David Lamparter wrote:
> On Sun, Nov 10, 2013 at 12:55:00PM +0100, A. Przygienda wrote:
>> Thinking further, maybe in the type of TLV encoding it would be good to
>> think about having a 'mandatory/transitory/optional' bit in terms of use
>> by routers (kind of ripping off the BGP'ish and other TLV encodings).
>> Just food for thought here when starting to think about e.g. aggregation
>> of TLVs over prefixes and so on.
> I suggested that a while ago, and in the end it was dismantled because
> there was no real use case that didn't fall apart.  If you can come up
> with a good design and something close to a realistic scenario where
> this is used...
>
>

Hey David, well,  searched the archives & found it. Remember even having
read it & actually seems
I commented on it from a different angle. It was more of
the 'ignore/strong unreachable' type & that's why my brain slipped the
connection.

So let me ask the question again from yet a different angle and verify
some assumptions I'm making
not having been to OSPF WGs recently:

The way I see this draft, it's immediate
purpose is to get today some 'carrier encoding' for things like Seg-Routing
& Src-Dst routing without the necessity of tons of new LSA types, more
flexibility than
the usual rather clunky
add-a-options-bit-add-something-to-an-LSA-grab-a-cap-bit or having
to link lots of info between LSAs and stuff-stuffed-in-opaques.

If this is the *only*reason, then further discussion I start here makes
no sense, no new TLVs can
ever influence core behavior such as SPF/summaries/flooding and at first
glance, the whole thing could have been
done using Opaque LSAs just like the optional-router-caps and this draft
is a redundant,
somewhat more elegant encoding.

But reading and thinking about it, I see further potential to glue
new TLV "things" easily (and more elegantly than opaques)
to 'links' and 'interfaces' and 'routers'. In short, it could help to
move OSPF more into an
TLV-type-encoded protocol format rather than a fixed-format used today
(to largest extent). Think
OSPFv3.5 ;-) where the extended-LSA is THE LSA format.
As we know, TLVs are a sharp stick, they allow to extend the protocol
easily and quite elegantly
but they can poke you in the eye as well. Overall, they are where things
go since the
strongest traditional reasons for fixed encodings such as
4-bytes-aligned MMU C structures
;-)  are things of the past given the raw amounts of power & CPU
available & the popularity
of IGPs as loosely-synchronized-network-databases ;-)
vs. the old times of well-understood one-purpose mechanism to get
reachability @ L3 within AD.

So, assuming you all have in mind coming glorious days of OSPFv3.5,
people would use it of course to do things like adding new TLVs that
will influence
SPF behavior, interface types, prefix reachabilities and so on.  Now,
how to keep this beast
in check and that's where my observations were going.

In crux the question would be then, how is the draft supposed to keep
compatibility with 'newer' versions of this encoding
when new TLVs are being introduced and suggested and start to influence
things.  Well, people who
have been in the game for longish time tend to think about this stuff in
terms of
mandatory/transitory/summarizing properties of data/TLVs and it is a
rathole but one that
always opens in these situations.

So I follow this kind of thinking a tad down the road to clarify the
scope of the extended-lsa-draft
here as of how far this draft is supposed to
reach [ If that thinking is tad cross to usual OSPF-hat-on-design, an
optional
way of thinking about this protocol architecture issue
would be to 'add-another-options-bit' for every TLV that is introduced
and influences
SPF/redist/summaries. This is nothing else but a 'mandatory' bit on some
new TLV. You may run out of bits quickly though ;-) ]

Hypothetical examples to justify all this rambling (I try to keep things
simple as first examples):

 1. someone adds a 'I-can-only-route-traffic-on-sundays' TLV:  this
    would be manadatory, that means  any router not understanding this
    TLV would have to not compute through this router. Everything would
    go well until sunday when a router upstream understanding the TLV
    would send you traffic to carry through to a router downstreamnot
    understanding the TLV and then it would loop. Logical conclusion:
    you don't understand mandatory, get out of next-hop SPF or otherwise
    you end up in the multi-topo cornerwith multiple SPFs.
 2. someone adds a 'only-generate-type-5-from-this-type-3-on-sundays':
    as you see, you'd have to  get out the redistribution/summarization
    if you have a mandatory TLV like this. That leads
    into'transitory/summarizing' type of bits but those are difficult to
    get right (we can take the discussion further from here butI never
    saw them 'gotten right'). Logical conclusion. You don't understand
    the mandatory prefix TLV, leave the area (since you havedifferent
    reachability assumptions than other routers understanding the TLV). 
 3. Someone adds 'I-have-disjoint-path-computation-property' TLV which
    would be non-mandatory fornormal SPF but mandatory for a
    source-destination-disjoint-path-SPF.  So, people can do SPF overit
    as normal but someone running disjoint-path-source-dest-SPF reads
    the internal mandatory flagfor it & computes the path omitting the
    link (should be obvious that in source-dest type of SPFs you can mix
    routers understanding a mandatory TLV with some that don't contrary
    to next-hop SPFs).


To summarize:

  * As authors, ask yourself the intellectually honest question whether
    this encoding is ONLY for thingsthat will never touch
    SPF/redist/summarization/prefix reachability. If answer is YES, then
    state forcefully in the draft that this is NOT a
    new-OSPF-TLV-encoding but more elegant way to do opaques and nothing
    else.

  * If answer is NO and this goes into direction of OSPFv3.5 with TLV
    encodings:

      * think about reserving two or three bits in type (or length, 14
        bits still give you 8K TLVs with sub-TLVs)along the
        mandatory/transitive line of thinking and start to work out what
        happens when a router does not understand mandatory/transitory. 
        Section 12.1 is then largely unnecessary but instead maybe a new
        section is in order. Not only get-in-get-out behavior needs to
        be precisely specified (but also things like multiple copies of
        same TLV, misformatted TLVs, missing required TLVs, sequence of
        TLVs, TLV type spaces and so on). This sounds excessive but it
        isn't given the fact that this encoding would be a very deep
        foundation for many years to come (and well, I'd help to write
        it ;-)


So, I hope I'm contributing here to clarification of purpose rather than
stultifying ;-)

thanks

---  tony









 


<<attachment: prz.vcf>>

_______________________________________________
OSPF mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/ospf

Reply via email to