[aodvv2-discuss] Resolving comments within file "draft-ietf-manet-aodvv2-11 (p1-22).pdf"

  • From: Charlie Perkins <charles.perkins@xxxxxxxxxxxxx>
  • To: "aodvv2-discuss@xxxxxxxxxxxxx" <aodvv2-discuss@xxxxxxxxxxxxx>
  • Date: Wed, 5 Aug 2015 16:30:42 -0700


Hello Vicky,

I have attempted to address all of the comments posted today, so that you might have a chance to resolve as many of them as possible in the upcoming revision. That was a pretty huge task, unfortunately. It's pretty much unfair to post such voluminous comments on the very last day before our deadline, and I think we will be forgiven for not handling every last one of them, especially where a lot of text would be required. In those latter cases, I have simply stated "Text is always appreciated".

Again, my comments can be modified and forwarded to the list for more discussion, but please take my name off before doing so.


“Revised” — how? Would be good to call
out any new features introduced, major
bugs addressed, or unused/inappropriate
features from the predecessor eliminated?

No major bugs addressed. Some features made optional (see the section). Requirement for compliance to RFC 5444 addressed.

This is a little over-stating the applicability:
these statements may be true in some
scenarios (for example, when there are few
concurrent traffic flows, and therefore few
routes to repair, and therefore few flooding
operations to contend for channel access).

The number of concurrent traffic flows supportable is not known. The statement does not make claims about number of flows. We could say, "in cases where the communication graph does not form a complete graph".

As a general statement, this last sentence is
incorrect.

Maybe if the extra clause is added, this comment will become inactive. But, notably, there are zero routing protocols in the IETF that can claim to always provide rapid convergence, or even a true representation of the network topology. Of course he knows this.

This issue has been brought up several
times in the WG before, but has not been
addressed so far.
What are the clients of a router? I believe
that this is a confusing and inappropriate
term (and, fortunately, furthermore is an
unnecessary term).


I don't know what to say about this, except that we define the term a certain way, and the definition is refined by the protocol operations in the document.


In the terminology “router client” is defined
as something akin to “someone requiring
the services of a router” — which matches
“the whole world”: the service provided by
a router includes “forwarding an incoming
data packet so as to bring it closer to the
destination”. Consequently, the source of a
datagram is the “client” of a router 10 hops
away that happens to be on the path
towards the destination? I believe that this
is not the intention.

I don't view this as any sort of constructive comment. If a butterfly flaps its wings in Warsaw, and later a flower blooms in Berlin because of that, is the flower a client of the butterfly?

Also, when I see “client” the next word that
pops into my mind is “server” — two
entities running (typically) distinct parts of a
protocol: a DHCP server and a DHCP
client, for example. I believe that this is not
the intended association either.

We need to define a word and use it as defined, regardless of whether the word can possibly be used in different ways in different documents.

If anyone has a better term than Router Client, of course we could discuss changing terminology.

So….If either of the two interpretations
above are actually intended, then the
document is incomplete. On the other
hand, if either or both of these two
interpretations is not intended then the term
“router client” or “client” must be removed
from the document — which must be
reworked to use a more appropriate (i.e.,
less confusing) terminology.

Same comment as previous...

What I believe that the document is trying
to say is “the set of addresses, for which
this router is able to provide authoritative
routing information” — in RFC7181-terms,
that would (for example) be the content of
the “Local Attached Network Set”. I would
like to suggest perhaps using that as
inspiration for how this issue could be
resolved.

Should be "Locally Attached", but this term is just as ambiguous as Router Client. Attached how? What is a network? etc.

Notably, a Router Client is not required to be a single hop away from the AODVv2 router, for instance if the client is on a connected subnetwork with multiple links and non-AODVv2 routers providing local connectivity. This has been a feature of AODV design since long before RFC 3561.

In the meantime, we could simply redefine
Router Client
A node for which an AODVv2 router will enable connectivity to destinations by the operations specified in this document. An AODVv2
router is also its own client.

If I stumble across some alternative terminology for this I'll send out another email with suggestions.

“Confirming adjacencies” sounds like there
is a sort of HELLO message exchange, or
other local signalling, in use — at least, to
someone used to reading OSPF and related
protocols, that would be the immediate
understanding.

This does not require any action on our part, unless you want to add a clause along the lines "without requiring HELLO message exchange".

The overview must also include a
paragraph on the intersections between this
protocol and the forwarding plane — this,
as it is different (and more invasive) from
that which is typically seen in routing
protocols.

We have a section on what is required from IP and that is the answer to this comment.

Specifically, as a reactive protocol, it is
required (at least) that the forwarding plane
is modified :
1) A “miss” when looking up a next hop for
a data packet to be forwarded, is signalled
to the AODVv2 process so as to permit that
route discovery be launched;
2) A “miss” when attempting to deliver a
data packet to a next hop, which was
recorded in the routing table, is signalled to
the AODVv2 process so as to permit that a
route repair be initiated and/or a Route
Error be generated.
3) A “hit” when looking up a next hop for a
data packet to be forwarded to a
destination is signalled to the AODVv2
process so as to permit maintenance of
“active route” Route State, timers and such.

These can be added to Appendix A if desired.


It is important to do more than this: 7182
does only provide “containers” for ICVs and
timestamps, and does not specify how to
use them to obtain specific security
properties.

Well, we *do* do more than that. We could replace
"recommendation" by "mechanism".

This is incredibly frustrating to read and
use: all the “interesting concepts” are
defined as “An AODVv2 Data Element” with
a forward reference to a Table 1
somewhere.
Why is the content from that “Table 1” not
simply included where it belongs: below
each of the terms in the hangText? The
existence in a table does not really
contribute anything (other than space in a
printed document).

I'm O.K. with keeping Table 1. The descriptions from Table 1 could be imported into the definitions. Who knows why it is so incredibly frustrating? Maybe it's a language issue, and frustrating means something else in this critique.


This has been brought up on the list several
times in the past, without having been
addressed.
There are “hosts” and there are “routers” —
whose roles are well defined. “Node” not so
much — which is clear from looking at the
definition here: “either AODVv2 routers or
router clients” (with “router clients” being
defined as “an AODVv2 router is also its
own router client”).
This is very much related to the use of
“Router Client”, and both that term, and
“node” indicative that some clarity is
needed here.

That's a matter for discussion. I don't see what's unclear.

All a router cares about is “an address”. If
that address is of a network, or a router, or
an interface (and, if said interface is
installed in a router or a host) doesn’t
matter.
So, “an address” is something that the
routing protocol should care about finding
paths to. Which means that each address
that should be made reachable by the
routing protocol should be advertised by (at
least) one router in the network.

Not necessarily, especially for reactive routing protocols.


One way of doing that would be to simply
talk about “Attached Networks” as is done
in RFC7181, wherein an address included in
the “Attached Network Set” is advertised
by an OLSRv2 router….in this case, the
equivalent would be “for each address in
the Attached Network Set of an AODVv2
router the router MUST respond
authoritatively to a RREQ, and MUST
maintain the corresponding sequence
number”.

Do we really want to get into a whole new terminology with its own set of ambiguities?


Is there any technical reason why not
simply *any* address could be considered
by the routing protocol?
My understanding, but correct me if I am
wrong, is that all that is required is that all
interfaces in a given AODVv2 routing
domain has an unique address.

Sure, we can do loopback addresses, unspecified addresses, and multicast addresses.

With a little more work we can do geographic addresses and DTNs.

Do we have to do this before Last Call?

That some of these addresses (by an IP
addressing architecture document) has
special semantics associated (such as are
link locals, or are for private use, or are for
example use only, or are for multicast) is out
of scope here?

Yes I would say they are out of scope. I'm happy to do multicast later.

Now, with that being said also, the WG
wanted that RFC7181 supports not just
multiple interfaces, but also the same
address used on multiple interfaces of the
same router. There were good reasons for
that, and while it was not trivial to
implement, it turned out to be the right
thing to support. If there are technical
reasons why this is not supported in
AODVv2 (for example, if this cannot be
made work because of <reason>) then that
should be called out in the applicability
statement also?

I am not aware of any reason why this would not work.

Conversely, if it is possible in AODVv2, then
I do not believe that it is clearly specified
how (at least, in the “naive” on paper
examples I drew up, something ended up
not working). So either the protocol as-is
does not support it (but could be made to?)
or it is supported (but just need to be
spelled out), or is not possible (and need to
be disclaimed in the applicability
statement).
Stan Ratliff was a driving force in holding
the WG’s collective feet to the fire in getting
this support included in RFC7181, and
would likely be the right person to consult
on this matter?

It would be nice to find out what's not clearly specified.

Repeat of comment from introduction:
This issue has been brought up several
times in the WG before, but has not been
addressed.
................... etc. ..................

Well, the answer is the same.

“one of the sequence numbers maintained
by an AODVv2 router to ….”
That’s a little vague and ambiguous:
apparently that sequence number is not
enough — but we’re not told with what it
must be complemented in order to be
enough to determine if a route is fresh or
not.
Could that be written:
“SeqNum is the sequence number, which
does ______”

I'm O.K. to restrict AODVv2 routers to maintaining a single Sequence Number for all of their addresses, but I believe we were previously requested not to do this. I don't know what "complemented" means in this comment.

Target Node is confusing me, and the
definition given is only making that worse.
What does it mean to be “hosting the IP
address”?

Are we to explain what it means for a node to host an IP address?

A RREQ is flooded through the network,
and I assume that a RREQ contains the
TargAddr.

Check.

Some *router* (not node!) is
configured to (i) respond to RREQs for
TargAddr, and (ii) maintain sequence
numbers associated with TargAddr.

Check.

So is “TargNode” that *router* ?

No, TargNode hosts the Target Address. But, see below...

In that
case, simply saying “TargRouter” would
make me happier, as would I be happier if
including the description above.
Of course, if this is not the correct
understanding of TargNode, then that’s a
good indicator that the concept is
confusing.

We can get rid of Target Node entirely, I think.

In Table 1, replace:

TargAddr | IP address of the Target Node, the destination
| address for which a route is requested

by

TargAddr | IP address of the destination
| for which a route is requested

and I think that there are only two other instances of Target Node; they can be replaced by Target Address.

This is probably putting the cart before the
horse quite a bit. I must confess, I cheated
and read the specification end-to-end
before starting this review — so I kinda
understood what was meant.
I’d first put “Valid route” before
“unreachable address”, since the latter
uses the former. [And yes, that would mean
that terms would not come in alphabetic
order — I do prefer clarity over adherence
to the alphabet, though]

Well, other people strongly disagree with this. In fact, maybe even this person complained.

Second, should “valid route” not be
qualified by “to a specific address”?

No problem.

Third, is an “unreachable address” then not
“an address to which a valid route is not
known — either because no route to that
address has been discovered yet, or
because it is not possible to discover a
route to that address”.

I would prefer to keep it that unreachable means that something is broken, not that Route Discovery simply has not yet been attempted.


By the way, I note that you distinguish
“node” and “address” here; that does mean
that if a given end-point has two addresses,
“IP1” and “IP2” (possibly, on the same
interface), then you will need two RREQ/
RREP cycles to discover paths to both of
these?

Yes, it does mean that.

Also, will a remote device be able to learn
that IP1 and IP2 really are “the same
device” (or even, “the same interface”)?

Not by using AODVv2. Moreover, I think that for privacy reasons this is a good thing.

Given that RFC5444 does not ensure
ordering of addresses (or, of elements in a
TLV block), would it not be possible to talk
about an “AddressSet” (and similar for
MetricTypeList and PrefixLengthList, and
…) so as to not risk (unintentional)
misunderstandings for the reader?
Generally, unless there’s a really good
reason for assuming (or requiring) ordering,
I’d prefer talking about “set” and then leave
an implementer to figure out which precise
data structure is suitable?

No problem to change instances of "List" to "Set".

Actually, this is not really a set of “data
elements” but rather the “protocol data
units” that AODVv2 routers exchange —
correct?

I think that data elements is just fine, really.

I.e., they are defining the content of the
messages, and not the data elements used
by the routing algorithm? Suggest changing
the name and adding an explanation.

We do not restrict algorithms from using data elements other than those listed.

Also suggest abolishing this table and
folding the definitions in with the other
definitions in the terminology section.

I reckon a lot of people will prefer to have the table. But if everyone else wants it out that's also fine with me.

I strongly disagree with the assertion that in
emergency and disaster relief scenarios
“the ability to communicate is more
important than being assured of secure
operations” — I think that that’s an
unfortunate and incorrect claim to make.

We could change it to say "may be more important".

I understand the complexities of providing
security of a reactive routing protocol. I
believe that it would be orders of magnitude
better to call those out, and then describes
the limits of what can be done (securitywise)
than to claim a set of scenarios not
needing security (especially since…they do
…)

Well, text is always appreciated.

To give a simple example, given that
RREQs are mutable (notably the “metric”
field) in transit, and is manipulated by all
intermediaries, then obviously a simple e2e
signature (inserted using the RFC7182
format) would require that field to be
“zeroed out” for calculation/verification —
which would open an attack vector on the
protocol. Calling that out, presenting the
consequences hereof, and presenting the
conditions wherein — despite that —
AODVv2 would be applicable (For example,
always run over a L2 providing hop-by-hop
security, preventing an uninvited intruder
from overhearing and participating in the
protocol), that would be particularly
valuable.

Right now our security is hop-by-hop and so the above doesn't apply. Plus, I think we did have something about encryption providing confidentiality.

I think that the statement “AODVv2 will not
make use of” and then “…cannot confirm
bidirectional connectivity should be
ignored” are slightly conflicting.

I don't understand the problem here.

Does this paragraph intend to say:
“AODVv2 cannot work when faced with unidirectional
links, and must not be deployed
on networks wherein such are possible”

This is not true, and the paragraph should not be interpreted that way, and it does not say that, and I don't understand how that interpretation could be inferred from the paragraph.


Or, does it intend to say:
“AODVv2, faced with uni-directional links,
will detect and exclude those from use for
forwarding data packets”.

This sentence could be added if that makes the paragraph clearer.


I am curious on the last sentence; requiring
persistent state….could you elaborate on
what you would store? and on what, and
how, a performance penalty would incur?

It matters about whether the sequence number is stored across reboots. The penalty is waiting for longer if the sequence number is lost. The document used to have language for that purpose. In the interest of time (new version tomorrow!) I will look that up later.

The WG wanted that RFC7181 supports not
just multiple interfaces, but also the same
address used on multiple interfaces of the
same router.
There were good reasons for that, and while
it was not trivial to implement, it turned out
to be the right thing to support.
Given that this was required by the WG, I
wonder if there are technical reasons why
this is not supported in AODVv2 (for
example, if this cannot be made work
because of <reason>) then that should be
called out, also?

As noted before, AODVv2 supports that based on whatever address the application uses. How it is that an application would use different interfaces for the same IP address is not our business (but it is nonetheless weird).

I think that appendix B needs to be
removed. Essentially, it makes claims that it
is possible to do multi-homing — but
neither specifies how it is done, nor gives
pointers to documents that justify the claim.
AODVv2 does not support multi-homing —
that’s clear, and it is fine that it is called out
here. Thank you for that.
Now, with that being said, I am torn
between being satisfied that it is called out
on one hand, and wanting to have “multi
homing” on the other hand. RFC7181
supports multi-homing, FWIW.
I believe that this also would merit some
explicit discussion by the WG, in order to
understand if this design decision is
acceptable?

AODVv2 has never explicitly supported multihoming. But it could be done. But not before Last Call. There is actually a fairly simple way to do it.

I am wondering “why just the Internet”?
Can any external network (which is not
0::0/0) be interfaced to an AODVv2-routed
domain?
Can multiple such external networks (which
are not 0::0/0) be interfaced to an AODVv2-
routed domain?
I can see clear use-cases for “a MANET,
connected to two external networks, neither
of which are 0::0/0”, and I would like to
make sure that that configuration is
supported by AODVv2.

This does not need to be done before Last Call. Of course any external network can be interfaced in the same way. Perhaps IAR should be replaced by ENAR for External Network Access Router. Vicky, if you want to make this change please feel free.

Is this a should, or a SHOULD? If the latter,
should it be a MUST?

I think that SHOULD is clearly correct, because for many devices there's only one address and one interface and requiring storage for a list is wrong.

Generally, aiming for a very a low number of
SHOULD is a good design metric for a
document ;)

That is highly debatable!

As indicated earlier, I believe that the term
“Router Client” is ill chosen. I believe that it
is more appropriately an “Attached Network
Set” since — as indicated previously — the
term “Router Client” is ambiguous. I am
pleased to see, though, that this “Router
Client List” in reality is an “Attached
Network Set” and so that change should be
(relatively) easy.

................ I think this has already been discussed....

Also, I recommend to not say “subnet” —
how about rephrasing to “If a prefix is
included in the attached network set of an
AODVv2 router, then that AODVv2 router
MUST provide connectivity for, i.e. answer
to RREQs and maintain sequence numbers
for, all addresses from within that prefix.”

This would O.K., except a lot of people understand the term "subnet" and I would have thought we should appeal to that intuition.

There’s no “cost”, distance, metric,
associated with these attached networks?
I’d think that that’d seriously hamper some
deployments..

Actually, we should allow assignment of costs to Router Clients. This would be done by having RREP_gen initialize the cost field to something nonzero before transmitting the RREP. That was done in RFC 3561. I don't remember why someone complained about it in AODVv2 and I got tired of arguing about it. Vicky, if you want to specify that RREP_gen can initialize the cost field to something nonzero (easy to do for hop count), please feel free. Or I can do it when I get the editorial pen.

Stepping away from the “multi-homing”
discussion (which we should have in
isolation) even without discussing multihoming
I envision deployments where I’d
connect to “external service A” if I know
that the delay is below XX — but if it is
above XXX then I’d rather connect to
“external service B”…and where the major
impact on the delay could be “from the
MANET router through the external
network” rather than “within the MANET”.

Well, we can't do this before Last Call.

Does section 6.2 describe how to monitor
an established adjacency only, or how to
discover neighbouring AODVv2 routers?
Looking in 6.2, I see
“Not every pair of neighboring routers will
necessarily form an adjacency,” — so it
likely isn’t 6.2 that tells me how to maintain
this table?

AODVv2 does not require knowing all neighbors.


In short, “A neighbour table MUST be
maintained” — where can I find information
on how to do this?
Section 6.2 states:
“The default approach for monitoring
bidirectional connectivity to the next hop
toward OrigAddr is to request
acknowledgement of Route Reply
messages.”
That certainly will tell me if a link over which
an RREP is sent is bi-directional, but will
not maintain a “neighbor table”.
So how is this done? Or, is the “Neighbor
Table” not supposed to contain the
complete set of neighbours? What
information “…MUST be maintained” then,
in this table?
This is very unclear, I would not know how
to implement a mechanism that populates
this “Neighbor Table” with the needed
information here.

Maybe it would be enough to state that the neighbor table does not have to include information about all neighbors. (?)

The information that MUST be maintained is the information about bidirectionality.

“Neighboring routers which cannot confirm
adjecency…” — do you mean “Neighboring
routers for which an adjacency cannot be
confirmed”?

Yes, that is correct.

But also, from the terminology, it is not
actually clear what it means to “confirm
adjacency”:
“Adjacency
A bi-directional relationship between
neighboring AODVv2 routers
for the purpose of exchanging routing
information.“
If I was to interpret this exactly as written,
then this text tells me to “black-list any
neighbor, from which a RREQ followed by
an RREP has not been received”

I do not see how that inference was inferred.

I am afraid that I do not understand what
you mean here….is “adjacency” simply “bidirectionality
has been verified”?

Not exactly, but maybe it's close enough that we could use the language.


And, is “blacklisted” then not rather “we
tried to verify bi-directionality, but failed” —
it certainly is not “bi-directionality has not
been confirmed” since that also captures
situations where no attempt at verification
were made.

I think that's what blacklisted means, more or less.

What would such an “indication of
adjacency” be?

Reception of a RREP_Ack. Or the other things mentioned in the draft.

Also, is it mandatory to represent the
information in the formats that you give (in
this, and other sections)?Specifically, must
it be in forms of tables? Your use of
“should” here indicate that yes, if so, why?

We could just say "contains". The representation is not mandatory.

I am very confused by the use of “neighbor”
and “adjacency”. — for example
“Neighbor.State: the state of the adjacency
…”
And then below “Before a neighbor is
confirmed” — but “confirmed was a “state
of the adjacency?….and that paragraph
continues [but see below for that]
I do not understand that.

I don't understand the problem here. Maybe something like "potential neighbor" is wanted?

I do not understand that. “When neighbor
state is set to confirmed, the unconfirmed
routes using the neighbor as a next hop can
transition to Idle”
1) Please do not mix the description of data
structures, with the description of the state
machine / processing — it makes it hard to
read [this comment applies through this
section 4, fwiw]

If information in a conceptual data structure changes, we can modify information in a route table entry. I do not see why not.

2) With that said, what does “before a
neighbor is confirmed” mean in the
preceding sentence? What state does that
correspond to?

The state of not being confirmed?


3) It is not clear if there is a difference
between “neighbor state” and “state of the
adjacency”; the terminology lead to believe
that a subset of neighbors were
adjacencies, but this section mixes that up.
Please clarify.

I am at a loss here.

4) on the processing sentence (that does
not belong here), what does it mean that a
“route…can transition to idle”?

It means it can be marked as idle. Maybe somehow using "transition" is "confusing"?

5) there’s a lower-case can — does that
mean that it is *not* 2119-language? in that
case, what is the rule here?

"can" is not clear.

Replace "Unconfirmed routes using the neighbor as a next hop
can transition to Idle state" by
"Unconfirmed routes using the neighbor as a next hop
are marked as Idle."

I note a lower-case “should”, so I infer that
this is not 2119-language either? what is,
then, normative behavior here?

Replace "for their next hop should become Invalid." by "for their next hop are marked Invalid."


I note a lower-case “should”, so I infer that
this is not 2119-language either? what is,
then, normative behavior here?

Replace "the neighbor entry should be
removed and all routes using the neighbor as next hop should become
Invalid." by "the neighbor entry is
removed and all routes using the neighbor as next hop marked
Invalid."

I would like to nit-pick that: the router can
maintain this sequence number in whatever
format it pleases — but, when it includes it
in control messages, it must be
representable in a specified format,
respecting certain rules.

It is specified to be an unsigned integer.

“it can maintain different sequence
numbers for each interface IP address, but
MUST NOT use … ”
This needs clarification.
First, “can” is not a 2119-word.

Replace "can" by "MAY".

Second, what are the consequences of “a
single sequence number per router” vs. “a
single sequence number per interface”?

We do not have to specify the consequence of that. It could be used for logging on different interfaces or other purposes.

Third, this paragraph is written as-if each
interface has one and only one IP address;
that is unlikely to be the case. How would
this impact things?

Replace "MUST include the sequence number of that
interface’s IP address" by "MUST include the sequence number of
the IP address associated with that Router Client"

Fourth, an AODVv2 router that is answering
to RREQs for addresses in an “attached
network set”, is that router maintaining and
using a seq# for each address?

Typically not, but it could.

Or just one
sequence number?

This would be the typical case.

Note that these
addresses are *not* associated to an
interface of the AODVv2-router (not
necessarily, at least) and so this text is not
entirely clear.

I'm not sure what to make of this.

Fifth, assuming that one wanted to consider
multi-homing [possibly as an interoperable
extension], would mandating a specific
choice of which sequence numbers are
used for what here be more or less
advantageous?? I have a hunch that it
would …

I don't think we have to do this before Last Call, but (a) I am happy to do it and (b) text is always appreciated.


How about saying RREQ, RREP or RERR?

No problem.

I am picking this point to dig in here.
I think that the choice of phrasing is
unfortunate, and I saw that Christopher
Dearlove made a similar comment on the
list - which I am going to agree with.
The routing protocol implementation
operates on an “internal data structure”; in
RFC7182 that’s called a “routing set”. Such
a set may contain a lot of information, so as
to permit routing protocol internal
functioning.
At appropriate times, a subset of the
“routing set” is reflected into the “routing
table” / FIB, for use for data forwarding.

This is according to one implementation design.

To take but a simple example, the routing
set may contain the “reverse routes”
installed by forwarding RREQs and which
have not been confirmed as bi-directional:
such should be kept around for forwarding
RREPs, of course, but certainly should not
be considered for use for forwarding data
traffic. Adding this “reverse route” directly
to the “routing table” could be catastrophic,
consider this example: a valid, working
route from a to b might exist via c — but if a
receives a RREQ directly from c, adding an
entry reflecting that reverse route to the
routing table of a would “overwrite” (or, at
least, provide a lower-cost, alternative to) a
perfectly valid route.

This should be avoided.

I would like to see three things done to the
document to this end (note, this comment
does not just address this paragraph):
1) Be consistently clear that protocol
operations are on a “routing set only” and
that said data structure is different from the
routing table / FIB.
2) Use said “routing set” as appropriate for
protocol operations — for example, for
finding next-hop information for forwarding
RREPs
3) Provide a clear discussion somewhere as
to when the content of the routing set is to
be reflected into the routing tale / FIB —
and, in doing so, what information should
be reflected, and how (noting “removal of
entries” as well as adding of entries).

Again, AODVv2 can be implemented by operations directly on the route table. We did it.


must -> MUST ?

Yes, should be capitalized.


I would remove the two last sentences.
While I do know of good ways of unicasting
RREQs, and do not know of any good
reasons why multicast RREPs would be a
good idea, there’s no need to explicitly say
“future extensions MAY enable …”
something, nor saying “RREQ messages
are usually multicast” to leave the door
open for extensions — just make sure that
this specification does not explicitly prohibit
something should suffice [and remove the
cruft a bit].

O.K.

I note, though, that this section heading is
“Multicast Route Message Table” yet it talks
about RREPs (which are not multicast).
Suggest that the title is wrong?

If only.

What is that? Specifically, “the IP address”
— assuming a “node” can have multiple
interfaces, each with multiple addresses?

Can change to say "application" instead of "node".

Incidentally, this is an instance of why
“node” is not a helpful term, and where its
use leads to imprecision.

According to the above, I think we can eliminate Target Node.

“a packet” and “the packet” and such are
used a little scattered through this.
In RFC5444-terms, “packet” are welldefined.
I think that this section is not
referring to that “packet” but to “application
data packets” that trigger route discovery
— right?

Can use "application data packet".

2119-language?

Replace "should be maintained" by "SHOULD be maintained"

If a “node” can be a router, a host, or both,
then a “node” can have multiple addresses
— on multiple interfaces. In that case, what
is “the address or address prefix of such a
node”?

Could say "an address"

I think that, again, the answer here is to rid
the specification of “node” and work
through it “routing to addresses”.

Routing is to addresses. Addresses belong to nodes.

“An IP address…” — any address, that is?
I think that it is a little more tricky than that:
if router A has two interfaces A1 and A2,
and router B has two interfaces B1 and
B2…and that (for example, due to different
media/frequencies/channels) bidirectional
connectivity exists only between A1 and B1
exists, then for B to use A as a “meaningful
next hop” it would need to have A1 as
Route.NextHop — recording A2 would be
useless.
So it’s, almost definitely, not “an IP Address
of the AODVv2 router” but rather a
*specific* address of that router — which
must be carefully determined and recorded
by the processing.

The next hop interface structure in the route table is designed to eliminate all such ambiguities. Forwarding proceeds by using the Route.NextHopInterface, which is supposed to have that information. However, text for additional clarification is always appreciated.

In general in the multiple-interface-multipleaddress
case, there’re a lot of subtleties to
work through to make sure that things don’t
break. This “An IP address …” is an
indicator that it’s worth taking a good and
careful look to verify that all these subtleties
have been worked through.

That's what we're doing... Notably, this problem is a lot worse for OLSR than for AODV, simply because AODV doesn't need to have complete topology information.

How is this different from the information
stored in the “Route Message Table”? It
would seem that the sequence number for
a route is the sequence number for the
router generating the RteMsg that installed
that route — and which therefore should be
in the Route Message Table?
I would suggest that it would be more
“logical” to keep this information in the
“Route Message Table”, and not keep
“Invalid” routes around in the Routing Set?

The Multicast Route Message Table is used for duplicate suppression. Maybe he means something else.


I assume that you mean “application data
packets” here?

Yes. In fact, we could say somewhere in the beginning that all "packets" are application data packets.

Is this a 2119-may?

Yes.

This is all fine information to have, but I
would like to see this expressed apart from
the data structures, as part of the state
machine and processing description.
Embedding processing, state transitions,
into the data structure description does
make it much more likely to accidentally
overlook it. There’s a few of these “set
entries which have state transitions” and I
did have to doodle diagrams to keep it
straight in my head whilst reviewing. This is
especially needed if not able to “read it
through in one sitting”.

Text is always appreciated.

Teasing apart all such descriptions might take a long time, and so we could discuss it after issuing revision 12 (i.e., during Last Call). I am not sure what exactly is being requested here. In general, collecting together relevant information is a good idea, and to the extent that placing a textual firewall between processing, state transitions, and data structure descriptions detracts from that, we would need to assess the impact on clarity.

Regards,
Charlie P.




























































Other related posts: