[aodvv2-discuss] Re: Fwd: QA Review - Routing directorate review of draft-ietf-manet-aodvv2

  • From: Charlie Perkins <charles.perkins@xxxxxxxxxxxxx>
  • To: aodvv2-discuss@xxxxxxxxxxxxx
  • Date: Thu, 25 Jun 2015 21:20:27 -0700

Hello Vicky,

What if we respond with questions to the review? I think most things can be cleared up, but there are a few questions unanswered.

Follow-up below...

On 6/23/2015 1:53 AM, Victoria Mercieca wrote:




IMHO, There are two drafts here. There is a draft for AODVv2 and
there is a protocol applicability draft.


Would one draft simply contain section 3? I am having a hard time understanding this, especially because it was made very clear by previous area directors that AODVv2 really was required to include an applicability statement as part of the draft document.



Minor Issues:

1 Section 6.5.1 comparison 3:

What happens if the old and new route has a different metric type
(default versus other metric type). What is the tie breaking
mechanism? Can we add some text to clarify it?


If its a different metric type then we conclude there's no matching route, and we use the incoming route information to add a new route for that metric type. We could elaborate on that description in step 1 of section 6.5.1.

Right.

2 Section 6.5.1 comparison 3: point 2, if AdvRte is better,
shouldnt it be checked to

validate if its safe against routing loops?



I agree, I think we should switch steps 3 and 4 in 6.5.1.

Basically, with equal sequence numbers, a route that has smaller metric is *automatically* loop free (as can be proved). So it automatically satisfies LoopFree() and does not need to be checked separately. I can dig up a citation with the proof if needed.



3 Security Section: Security section is a bit weak. Since the
packets are rate-limited, the DDOS can become a significant
factor. If Encrpytion is suggested, then authors should clearly
explain 1) How would it be used, 2) How does one go about avoiding
DDOS of bogus encryption packets.


If someone could help me understand how the section fails on (1) I would be happy to try to clarify.

For (2), we rely on the fact that all messages are essentially single-hop, although they are regenerated for Route Discovery. Nevertheless, the DDOS would have to come only from neighbors, which is I think not very likely.




Nits:

1) Section 1, 2nd para:

<snip>

AODVv2 routers use Route Reply and Route Request messages to carry
route information between the originator of the route discovery
and the target...

<snip>


Replace with : AODVv2 routers use Route Request (RREQ) and Route
Reply (RREP) messages to carry route information between the
originator of the route discovery and the target, …


2) Section 1. What exactly is a target? Can we have Terminology
section cover definition of a target?


The target is the destination for which a route is needed by the originator's application. The term target was used because otherwise it gets confusing to distinguish between the (application) target and the addresses to which AODVv2 messages are sent.


3) Section 1, 3rd paragraph


Replace with: Metric is included in RREQ and RREP message to
represent the cost of the route….


4) Applicability Statement – IMHO, This should be a separate draft
(applicability draft for AODV2).


I am O.K. to do this but first it should be cleared with Alvaro.


5) Data Structures - section a bit too implementation specifc. The
conceptual Route Table entry stucture is an implementation
specific DS.


How should we address this? The way we have described each field is useful because we refer to these later.

I really don't know -- maybe we could ask for some suggestions...?


6) Section 5.2


<snip>

advertised route to update the route table will not cause a
routing loop to form.


</snip>


Replace with: advertised route does not create any routing loops.


7) Section 5.3 Default Metric type 3rd paragraph.


<snip>

The LoopFree function is derived from the fact that route cost...

</snip>


This paragraph should be moved to secion 5.2 where the loop free
function is described.


Not sure if I agree. That statement directly relates to the LoopFree function for the default metric. It wouldnt necessarily apply to all metric types. We could clarify with "This LoopFree function", or "The LoopFree function for the hopcount metric"?

I hope your text will address his concern -- worth a try.


8) Section 5.4 4th paragraph


<snip>


Further, any strictly increasing metric can be supported using the
LoopFree

</snip>


replace with: Furthermore, any strictly increasing metric can be
supported using the LoopFree

9) It is worth considering moving section 6: Protocol operations
ahead of section 5 Metric section (Swap them).


What do you all think of this? I thought it made sense to explain lots of supporting info up front then get into how it worked.

I also think one has to understand the data elements before being able to understand how to use them.

10) Section 6.3


<snip>

o avoid congestion, each AODVv2 router's rate of message generation

(CONTROL_TRAFFIC_LIMIT) SHOULD be limited and administratively

configurable. The implementation is free to choose the
algorithm for

limiting messages, including prioritizing messages when approaching

the limit. AODVv2 messages SHOULD be discarded in the following

order: RERR for invalidated routes, RREQ, RREP, RERR for

undeliverable packet, RREP_Ack.


</snip>


It would be nice to move the definition of an invalidated route
before referencing it in this section.


Could add this in to the route table entry data structure section, would make sense there.

We have a definition for invalid route in the Terminology. Isn't an invalidated route supposed to be a route that has been made invalid?

11) Section 6.4: 4th para:


<snip>

Determining which packets

to discard first when the buffer is full is a matter of policy at

each AODVv2 router; in the absence of policy constraints, older
data

packets SHOULD be discarded first.

</snip>


Possible to take the suggestion out and leave it for
implementations to decide?


Sure, it's possible! But I don't see what's wrong with leaving it.


12) Section 6.5.2: It would be nice for Section 6.5.2 to cover
under what circumstances Route.State moves to confirm/Active. Note
that the first paragraph does make a passing reference of the
state change and section 6.7.1 explains the states. Section 6.5.2
seems to be missing an event (description) in a state machine
(explained in section 6.5.2)

Hmm. 6.5.2 is about applying incoming information. But we do talk about states here before we've explained them. I suppose where we have step 7 in 6.5.2, where we say what happens if this results in a valid route, we could also say what happens if it results in an invalid route... ie how it could become valid in future.

13) Section 6.7.2: Can we add a case that describes if the looked
up route itself is invalid one (aside from an active route
becoming invalid)?

This is the beginning of the second paragraph, isnt it?

Yes, I think so...

14) Section 7.1, 7.2, and 7.4 should cover size for all data
elements described along with their descriptions.


So... something like "8 bit prefix length" or "16 bit sequence number", address lengths? size of hop limit field, etc? 8 bit validity time. metric field size depends on metric type. Because we have this separation of data elements and RFC5444 TLVs, it doesnt seem appropriate in all cases to write a size. For the actual data, we could do this. For metric would we assume hopcount and write size = 8 bits? and note that different metric types would be of different sizes?

15) Section 7.4.1: Isnt it harmful to rate limit RERR messages
(route withdrawals)?


Should we disallow this? We have 2 relevant parts here: we say we should check if we already sent a similar RERR recently, and not re-send if we have. Then we also say about not exceeding the rate of AODVv2 control message generation. Should we remove the bit about control message generation limit? We would then have the threat that if someone could maliciously bombard us with packets with many different source/destination addresses, we would be responding to each one with a RERR with no limit imposed.

Well, RERR messages are already rare in practice. If there were 100 packets in flight, all sent to the same undeliverable address, I think RERR should not be sent for all of them.


16) Section 9 should be moved out to a separate applicability
draft. Some of the sections in Appendix could also be moved out to
an applicability draft.



Move the gateway stuff out to a separate draft? How do we like this idea? :)

As mentioned before, I can do this without much difficulty, but I also wonder if it's wise. And it would be an "AODVv2 gateway" draft, not a general gateway draft, and so would not specify configuring the gateway as a default router.


Keyur also mentions some state machine diagrams, specifically for route state changes. Any others that would be valuable? Neighbor state changes?

I hope we don't have to do that before last call. It's a hellish amount of work and would just end up being another bulky appendix.

Regards,
Charlie P.

Other related posts: