[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GGF-NMWG: "Hop" definition?



Yeah, I guess. This sort of goes against the definition of "layer", but I guess it's what we've been talking about. Really we're using shorthand for two connections, one between layers and one at the same layer from source to dest. Maybe we should leave layers out of this document for now. i.e.:

path := source, destination, hoplist?
hoplist := hop(1) hop(2) .. hop(n), n >= 1
hop := path

Alternatively we could make "layer" an attribute of an endpoint.

- Dan

p.s. anyone willing to bet on the next time this comes up? maybe we should get a little pool going ;)

Martin Stoufer wrote:
To handle the edge condition when the path describes edge connectivity between to diferent layers:

path := soure, source_layer, destination, dest_layer, hop_list


Dan Gunter wrote:

Hmm, good points.

I think I'm getting convinced that the orig. def'n. was best. Just needed to be explained better.

This is all we're talking about, right?

path := source, destination, layer, hoplist?
hoplist := path(1) path(2) .. path(n), n >= 1

the key point being that "hop" is really just an alias for "sub-path", and has no attributes of its own. I guess the little grammar could make this explicit:

path := source, destination, layer, hoplist?
hoplist := hop(1) hop(2) .. hop(n), n >= 1
hop := path

I tried to repr. this in UML (attached) but I don't know how to draw an "alias", so I just showed hop inheriting from path.

I agree that explicitly naming the leaves of the tree isn't too useful, since we can infer this information.

- Dan

p.s. we could simplify the terminology by simply calling it a "pathlist" and using the first little grammar, but I think it's confusing to talk about "paths in a path".

Bruce Lowekamp wrote:



I think the hard issue here is selecting a model that captures the specific knowledge when available. Personally, I think that a definition with specific types for layer 3 and layer 2 hops would cover a lot of cases, but it isn't general, and it doesn't allow all systems to use their current working representation.

Remember that the goal here was to develop a system that could express the representation used by other

For example, there are at least two systems (one of which being Remos, which I helped develop) that routinely express paths as hops of both layer 2 and layer 3 devices. If we restrict end-to-end paths to being composed of layer 3 hops only, we lose the ability to represent the output of those systems, at least without some work converting. Actually, if we restrict the hops composing a path to be all at a particular layer---any layer---we have a problem representing those.

So the essential objection I have to the proposed new approach is that it involves proposing a "right" way to represent topology, rather than maximizing the flexibility. I think that runs counter to the goal of the document. Now, I think that it should be possible to take the proposed flexible representation and represent the "right" way of modeling topology without any more information loss than strictly necessary.

So I make the following assertions:

- our representation should be as flexible as possible
- the description in the text needs to be clarified to reflect out intentions, and the most common uses

- paths are composed of hops. we require at least one subtype of path: host-to-host path
- the key issue we are discussing is "what is a hop?"
- it needs to be clear how to express the layer at which the path is defined

options:
- maintain Fig 2 as it is now. Add an additional attribute to "hop" such that it is still a path with the added notation of the layer at which it is a hop.
- go back to the recursive definition where path has an element "hoplist" which is an ordered set of paths. Personally I like this, but others strongly dislike this. Possibly need to add more attributes.
- maintain Fig 2 as it is now, but add an additional attribute to "hoplist" which allows a layer to be specified (or possibly multiple layers). So if a system is reporting only layer 3 hops, it sets that flag. If it's reporting both layer 2 and layer 3, it either sets no flags or sets both flags.
- I'm not sure that a real representation would have this confusion. Since Fig 2 suggests that nodes can be "router" or "switch", isn't it always clear what layer a path/hop is at? Possibly we should add an attribute to virtual node to deal with routing/bridging hosts and VPN issues, but I think it's already possible to determine the layer at which any path is reported at.

I am strongly prejudiced against any approach which does not have "hops" being paths. As I see it, the only options to implement this are to have no actual data type of "hop", with hoplist just containing elements of type path, or of having hop inherit from path. If we decide that hop needs to have additional information such as the layer, then I think there should be an additional type. Otherwise, maybe not.

I don't see a benefit to using terms like "indivisible." I mean, if it's important, certainly it could be added as a parameter. Certainly it should be explained as the goal behind the concept. But I'm not sure what is gained by enforcing "all hops must be indivisible at their reported layer." If nothing else, few tools can say they are sure of that. I'm open to suggestions, however.

Bruce