[Interop-dev] NetJSON: clarify what an ID is

Juliusz Chroboczek (spam-protected)
Wed Aug 12 19:49:27 CEST 2015


> We should definitely tweak NetJSON to harmonize the features that are
> common to several routing protocols, while allowing each protocol to
> extend and customize the JSON structures to provide additional
> information that are only relevant to itself.

I'd say that we should put stuff in the spec if it can be defined in
a routing protocol-agnostic manner, even if it is currently used by just
one protocol.

> Its definition is: "local_addresses: array of strings representing
> additional addresses (mac/ip) which can be used to communicate with the
> node"

I'm lost here.  Does the network graph describe relations between nodes or
between interfaces?  In other words, if A has two radios and is
a neighbour twice of one interface of B, how is that represented in the
network graph?

> >   - it doesn't encode the difference between selected and redundant
> >     routes;

> which is what is present in the Babel RFC at section 3.2.5 ?

Yes.

> I would have no problem to add such an attribute if it's relevant also
> to other protocols. Otherwise it could be a Babel specific attribute,
> not present in the spec, but still allowed to be there as explained before.

It would be relevant to any modern distance-vector protocol, Babel, EIGRP,
BGP.

>>   - it doesn't allow encoding both metrics.

> Correct, we currently allow one metric per object, although is possible
> to have multiple NetworkGraph and/or NetworkRoutes objects listed in a
> NetworkCollection array, one for each metric. But I'm open for suggestions.

There's a misunderstanding.  The "remote metric" is the metric that was
advertised by the neighbour, and from which the "metric" was computed (by
adding the link cost).  I suggest adding an optional "remote metric" field.

>             "topology_id": "selected",
[...]
>             "topology_id": "redundant",

That field is badly named -- there's just one topology.

> "router_id: arbitrary string that identifies the router on which the
> protocol is running (eg: ip, mac, hash)"
> 
> It makes sense to have a strings like "12:ab:34:cd:56:ef". What do you
> think?

Agreed.

> Can the "next" attribute be an address while providing an addtional
> "next_id" attribute with the originating Router-ID as proposed by
> henning here?

Fine.

>> What happens if a neighbouring router has multiple interfaces?

> In NetworkGraph every router (called node) can list the interfaces in
> "local_addresses".

Suppose A and B have each two interfaces, A1, A2, B1 and B2.  How do you
distinguish between

  A1 -- B1

  A2 -- B2

and

  A1 -- B1
     \/
     /\
  A2 -- B2

?

> Would Babeld use local addresses or router IDs in the attributes
> "source" and "target" of NetworkGraph?

Local addresses.

-- Juliusz




More information about the Interop-dev mailing list