Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NetworkGraph] Amibiguity on graph scope #49

Open
nemesifier opened this issue Apr 22, 2016 · 9 comments
Open

[NetworkGraph] Amibiguity on graph scope #49

nemesifier opened this issue Apr 22, 2016 · 9 comments

Comments

@nemesifier
Copy link
Member

The RFC is not clear on whether NetworkGraph should contain the full network or just what is known to a node.

@fhuberts was deceived by this ambiguity with the first version of the olsrd1 netjson plugin.

I think it would be acceptable to mandate that every implementation returns all the information it has about the network graph. This should be ok for distance vector too.

Another proposal related to this one is #25 (how to distinguish between full graph and partial/local graph?).

CC: @HRogge @gabri94

@fhuberts
Copy link

Another proposal related to this one is #25 (how to distinguish between full graph and partial/local graph?).

Add a boolean to the NetworkGraph object, like 'global' or 'local'

@HRogge
Copy link

HRogge commented Apr 22, 2016

I think this is not about "what a router knows"... because olsrd definitely knows about links of remote nodes (through the TC messages).

it is more about direct vs. indirect knowledge.

Yes, a boolean "local" which can be true/false would improve the data returned via NetJSON.

@gabri94
Copy link
Member

gabri94 commented Apr 22, 2016

I agree, with a boolean we can determine what the json is containing, and we avoid inconsistency.

In the case of the flag set to boolean, what's the meaning of the list of all the nodes?
I propose to return just the 1-hop neighbor and the 1-hop links in the case of "local"
In the case of "global" we return the list of all the nodes of the network and all the links.

@HRogge
Copy link

HRogge commented Apr 22, 2016

There is no real "input parameter" for NetJSON... so I would say a protocol should ALWAYS put all information it has into the NetJSON object... and tag it with the "local true/false" tag so that the processing knows what to do with it.

@fhuberts
Copy link

The 'local' flag would mean "this information does not contain the whole network"

So the client know that is must query all nodes

@fhuberts
Copy link

fhuberts commented Apr 22, 2016

So we could also name the flag something like 'containsCompleteGraph' :-)

@HRogge
Copy link

HRogge commented Apr 22, 2016

This might be something to think about for DistanceVector protocols... Linkstate protocols always have the whole graph.

@nemesifier
Copy link
Member Author

nemesifier commented Apr 22, 2016

I also would prefer NetworkGraph to be intended as a full network graph unless a local boolean attribute indicates otherwise (one attribute for the entire graph is enough though).

@nemesifier
Copy link
Member Author

nemesifier commented May 5, 2016

After discussing, me, @HRogge and @fhuberts think partial (boolean) is a better attribute name.

The definition of NetworkGraph also needs to be improved to make it clear that an implementation should return the full graph by default unless it doesn't know the full graph (as in distance vector) and indicate that partial is true.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants