Hi Charlie,
Comment in line...
On 6 Oct 2015 5:31 pm, "Charlie Perkins" <charles.perkins@xxxxxxxxxxxxx>
wrote:
about a
Hello Vicky,
On 10/6/2015 5:25 AM, Victoria Mercieca wrote:
Hi all,
Bit slow on catching up with this one...
The text now says:
An AODVv2 router can only attach its own sequence number to information
regenerated byroute to one of its configured router clients. All route messages
two piecesother routers retain the originator's sequence number. Therefore, when
numberof information about a route are received, they both contain a sequence
whichfrom the originating router. Comparing the sequence number will identify
from theinformation is stale. The currently stored sequence number is subtracted
interpreted as aincoming sequence number. The result of the subtraction is to be
the AODVv2signed 16-bit integer, and if less than zero, then the information in
be text thatmessage is stale and MUST be discarded.
I think this text can be interpreted correctly. Somewhere there has to
embodies the short "Newer()" algorithm below.range or more then the message is considered stale, even if the incoming
Does that address Chris Dearlove's comments?
As far as I understand the discussion, if seqnums differ by half the
to be settled
In any modular arithmetic, "greater than" is ambiguous. The matter has
somehow, and interpreting the result of subtraction as a signed numberdoes a nice job.
wrong, this is fine...? Does that need explaining?
But since this amount of separation would indicate something bigger went
I don't understand this question.
Regards,charles.perkins@xxxxxxxxxxxxx> wrote:
Charlie P.
On Wed, Sep 23, 2015 at 7:09 PM, Charlie Perkins <
If X is negative, S1 is older than S2; for this sentence to make sense, X
Hello folks,
The basic idea is to subtract the sequence numbers, say X = (S1 - S2).
noted in the algorithm. So:
As discussed below, zero is a special case for S1 or S2. That could be
specification. If both S1 and S2 are zero, then this code pretends that S1Newer(S1,S2) returns TRUE if S1 > S2, where '>' means "newer".
Newer (S1, S2)
unsigned int S1, S2;
{
int X;
if (0 == S1) return (FALSE);
else if (0 == S2) return (TRUE);
else if (0 < (X = (S1 - S2))) return (FALSE);
else return (TRUE);
}
I think that this implementation is pretty natural given the current
use signed 8 bit arithmetic unless those are signed 8 bit values, so I
Follow-up below...
On 9/21/2015 2:52 AM, Dearlove, Christopher (UK) wrote:
Let’s take a simple case, current stored 128, incoming 129. We can’t
we should say that the result of the subtraction of the unsigned numbers is
Here Chris seems to be confused by the word "use". To be more precise,
which is 1, but only if we assume signed arithmetic wraps. Signed
Now let’s try current 127, incoming 128 (-128). Now we have -128 – 127
hurt to be more precise.
Ask for a citation. I'm skeptical of the claim anyway, but it won't
= -128. That’s negative, so we discard. As we should, the separation is
OK, now let’s try current 64, incoming 192 (-64). Now we have -64 -64
(with wrapping). Which is negative, so we discard. But given that 0 is
But try current 192 (-64), incoming 64. Now we have 64 - -64 = -128
separated it’s pretty clear something has gone wrong, so in practice it
OK, that’s a bit of a corner case, frankly by the time you are that
the half range separation, which we just decided to say do what you like. I
(In OLSRv2 we have no 0 omitted, so we have an actual ambiguity over
needs to say overflow means wrap, (c) it would be technically better to
So in summary (a) this really needs a clearer explanation, (b) it
situation is even less relevant than what Chris notes.
The business about the corner claim could be considered, but the
around the system that have sequence numbers separated by 10,000, I think
Basically, if we have packets from the same AODVv2 router floating
Regards,
Charlie P.