Great points Michael. In our paper available at
http://www.grotto-networking.com/files/BandwidthConstraintModeling.pdf
in section III we give a number of reduction/transformation procedures.
We looked at this from the point of view of lists of paths, most
suitable when there are few path choices and a limited number of
source-destination pairs of interest. And we looked at this from the
point of view of a "service specific" graphs which were transformed from
the original graph based on source-destination pairs of interest and
limits on additive paths measures such as delay.
I didn't know about tinkerpop. Thanks for the reference. Here are some
of the design considerations I was thinking about and how they are
supported in various graph formats.
Cheers
Greg B.
Desirable "graph representation" properties:
* Separation of nodes and links.
Both nodes and links can have properties and resource restrictions,
e.g., WDM nodes. Better not to embed node definitions in links.
Give both nodes and links unique identifiers. This aids incremental
updates and allows for parallel links without the use of ports.
* Incremental updates
May want to update resource status of nodes or links separately.
Keeping node and link definitions separate promotes this.
* Path definitions
Standardize a format for paths in terms of nodes or links. This
allows for path only topology sharing and abstraction. This is also
useful/needed for multi-layer network descriptions. OGF NML has a
"path" in terms of "links" in its "serial-compound link" notion.
* Ports on Nodes
These should be supported but not required, similar to what is done
in GraphML.
Ports are useful in asymmetric switching nodes such as ROADMs.
* Multi-Layer Modeling
For this we need the adaptation concept. We can define this as an
edge with properties if we are building on basic graph notions of
vertices and edges.
Note that OGF doesn't define layer networks, but just assigns
"encodings" to links, ports, adaptations, and switching services.
* Need to separate graph notions from network notions.
Graphs only have vertices and edges. Graph description languages or
frameworks (e.g. NetworkX) do allow for these to have properties.
Networks have nodes, links, and adaptations... Hence why OGF NML has
a separate Adaptation/De-adaptation classes.
* Many graph models support hyper-edges which can be used to model
some LANs and such.
GraphML OGF NML SNDlib NetworkX JSON
Node ids Explicit, Required, Unique Explicit, Required, Unique
Explicit, Required, Unique Implicit via ordering in nodes array. But
can use "id" attribute when converting from JSON to python representation
Link ids
(these also allow parallel links without ports) Explicit, Required
unique Explicit, Required, Unique Explicit, Required, Unique Implicit
via ordering in links array. .
Node properties Can contain a graph, ports, data, locator. Arbitrary
data via a (key, data) mechanism. Can contain location, has "life time
concept", name, ports. Not directly associated with links but only
through ports. Can contain coordinates Arbitrary.
Link properties Can contain a graph. Arbitrary data via (key, data)
mechanism.S Not currently defined. Routing cost, setup cost,
pre-installed and additional modules that have increments of capacity.
Must include source/target node references. Arbitrary properties can be
added.
Paths No serial compound links/"ordered list of links" Yes No.
Layers No, but could add a "property" for this.
This seems to be implemented by assigning ports, links, adaptation, and
switching service all have a "encoding" parameter. Nodes and Topologies
do not.
No No. Can add via a property.
Nodes Can contain arbitrary data including graphs. In topology
object. Contained in a "nodes" element. Contained in nodes list.
Ports Yes. Contained within nodes. Yes. have "encoding" parameter,
relationship to link. No. No. Could add as a node and link property.
Adaptation concept No. Could add as link property Yes. No. Could
add
as a link property.
On 1/28/2014 2:25 AM, Scharf, Michael (Michael) wrote:
>> Issue 7 of the proposed rechartering effort [0] deals with a suitable
>> format for encoding graphs in ALTO. My impression is that there
>> are two distinct capabilities we are looking for: graph
>> representation and graph transformation. The representation part
>> appears easy enough (I think).
>>
>> Taking some liberties with the syntax, a coarse JSON GML encoding
>> can be approximated as follows:
>>
>> graph [
>> node [
>> id 0
>> label "PID-1"
>> address-type "ipv4"
>> hosts ""192.0.2.0/24, 198.51.100.0/24"
>> ]
>> node [
>> id 1
>> label "PID-2"
>> address-type "ipv4"
>> hosts ""192.0.2.0/25, 192.0.2.128/25"
>> ]
>> node [
>> id 2
>> label "PID-3"
>> address-type "ipv4"
>> hosts "0.0.0.0/0"
>> ]
>> edge [
>> source 0
>> target 1
>> value 2
>> type "undirected"
>> ]
>> edge [
>> source 0
>> target 2
>> value 3
>> type "undirected"
>> ]
>> edge [
>> source 1
>> target 2
>> value 6
>> type "undirected"
>> ]
>> ]
>>
>> Two questions:
>>
>> 1) Is the encoding above close to what we have been calling the
>> "multiple-switch" model? Is something like this encoding one
>> possible
>> outcome of a work item related to Issue 7?
> Yes, at least this is my understanding. GML is, as well as GraphML (XML),
> widely used on open source tools, but both are not JSON based.
>
> An example for a JSON format that available in the well-known tinkerpop open
> source graph processing tool suite would be GraphSON:
>
> https://github.com/tinkerpop/blueprints/wiki/GraphSON-Reader-and-Writer-Library
>
> While I have no preference regarding the specific JSON syntax, I think that
> we look for a "property graph" model. According to
> https://github.com/tinkerpop/blueprints/wiki/Property-Graph-Model,
> a property graph has these elements:
>
> a set of vertices
> each vertex has a unique identifier.
> each vertex has a set of outgoing edges.
> each vertex has a set of incoming edges.
> each vertex has a collection of properties defined by a map from key
> to value.
> a set of edges
> each edge has a unique identifier.
> each edge has an outgoing tail vertex.
> each edge has an incoming head vertex.
> each edge has a label that denotes the type of relationship between
> its two vertices.
> each edge has a collection of properties defined by a map from key to
> value.
>
>
> In your GML example, the key question is thus how to deal with the "value"
> property of the edges. Similar to the ALTO maps, I'd argue that an ALTO graph
> must support a default cost metric ("routingcost"), but extensions should be
> possible.
>
>
>> 2) The harder part is graph transformation. What sort of algebraic
>> formulations do we expect to turn into protocol primitives that will
>> allow us to transform graphs as is outlined in Section 4 of [1]?
>>
>> [0] http://www.ietf.org/mail-archive/web/alto/current/msg02345.html
>> [1] http://tools.ietf.org/html/draft-yang-alto-topology-00
> Section 4 of [1] contains some pretty advanced concepts. I am not sure if in
> the current re-chartering we should aim at that level of complexity.
>
> In my opinion, a more low-hanging fruit - as a starting point for a
> discussion - would be the question whether ALTO would have protocol
> primitives to do SPF (and CSPF) queries on the graph. That would be an
> equivalent to the endpoint cost service. In my view, there are two
> alternatives:
>
> a) Corresponding ALTO primitives are specified along with the graph format
>
> b) As a first step, such queries would be left up to the ALTO client, i.e.,
> the ALTO server only provides the maps (=graph), but it is up to the ALTO
> client to perform advanced logic using that data
>
> I personally think that b) might be an easier first step for the
> re-chartering, but if somebody comes up with a good ALTO API extension for
> a), I'd be interested in it as well.
>
> Michael
>
> _______________________________________________
> alto mailing list
> [email protected]
> https://www.ietf.org/mailman/listinfo/alto
>
--
===================================================
Dr Greg Bernstein, Grotto Networking (510) 573-2237
_______________________________________________
alto mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/alto