[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [IMRG] Requirements for IMP
jon bennett wrote:
Maurizio,
the scheme you propose is probably the one that gives the maximum
flexibility with the minimum number of bits in the header (3).
The number of bits in the header is not a big deal at this stage. What
I was first trying to do was better understand what were the problems
you wanted to solve, and then once it is clear what the problems are
it is easier to look at possible ways to solve those problems. As I
understand it you have two separate concerns. The first is to monitor
the whole path without having to monitor every single router on the
path. It sounds like you think the 'every (2^N)'th router' approach
addresses that concern.
Then you have a second problem to solve which I think is unrelated to
the first one. (Is that a safe assumption? Or is there any chance they
are related, and that you would need to do both at once?)
Jon,
For the use cases I can think about now, I'd say that the problems are
rather separated, and being able to use the two schemes together is more
a "nice to have" than a strong requirement. Therefore, if there's an
argument for NOT using them together in favour of bit saving and
implementation simplicity (as you explain in the following) I think it
should be seconded.
However, in case you're intrested in measuring what happens on a set
of X routers close to each other (i.e. on a sequence of next hops),
AND these routers are far from the source (or on the reverse path)
AND you have a IPMP packet constrained in size, you may have (in
the worse case) to use X packets to let each of these X routers fill
the packet (playing with the TTL as you showed). Beyond having to
spend X packets, you'll never be able to have in the same packet the
timestamps of all these X neighbouring routers, which may be a
limitation.
An example (numbers are only for the sake of clarifying what I mean):
suppose your IPMP pkt can only contain 10 records and you're
interested in measuring
routers at "position" 21,22,23 along the path.
In my draft one of the IMP header fields is called "Start TTL", and
its use is to delay the insertion of path records as long as the TTL
value is greater than the Start TTL value, so if you wanted to measure
routers 21,22,23 you could set the Start TTL to 235, and you would
then only get records from 21,22,23, plus however many more records
fit in the remainder of the packet. Does it matter if you have records
inserted after the routers you are interested in? If it doesn't matter
then you would not need to have a Stop TTL, just the Start TTL.
I also agree that it's not necessary to have a "TTL end" field in the
header, as it only brings marginal advantages.
Now if you really don't want any more records in the measurement that
could be done without needed any more header fields. You could set the
value of the "Path Pointer" to be "Packet Length" - "Size of 3 Path
Records" so that the packet filled up after you got the three records
you wanted.
With 19 bits (start and end index + the 3 bits you suggested) we have
probably all the flexibility we need.
I'm not pushing right now for one schema or the other, just wanted to
point out that nothing comes for free...
Now if it was acceptable to do the trick with setting the Path Pointer
so that the packet filled up then you would only need 11 bits, 3 for
the 2^N'th skipping and 8 for the Start TTL. The reason I asked before
about would you need to do both of these at once is that if you didn't
then you could reuse the Start TTL bits when you wanted to do the
2^N'th skipping and then only need 9 bits (8 for the Start TTL and 1
bit to tell you which function it was implementing). The other benefit
of reusing the Start TTL field for this purpose would be that instead
of making the router make a mask from 3 bits you could just make the
sending host put the mask in the Start TTL field (which would have to
be renamed something like TTL Select, having more than one use now),
that way the router could just AND the TTL Select field with the TTL
rather then having to generate a mask first and then AND it.
Just a clarification. Are you thinking of a generic mask or of a mask
which always ends with a ones' string? (i.e. 00000001, 00000011, etc...)?
My point is that even if we could have a generic mask, I don't think
it's useful. With a generic mask with X bits set to 1, the number of
TTL values that are matched is equal to the number of TTL values that
are matched with the mask ending with X ones, but we "loose" the
property that these matched TTL are equally spaced.
Example: (Immagine the TTL is on four bit only, for simplicity)
- the mask 0011 would match with TTL = 3,7,11,15 (4 TTLs, equally spaced
of 4)
- the mask 0101 would match with TTL 5,7,13,15 (always 4 TTLs, but not
equally spaced)
I think skipping to every 2^N'th hop would be quite useful,
particularly for size constrained packets like VoIP where recording
every 4'th router would let you monitor a path up to 40 hops long with
a single packet (In my draft there is a flag in the header which lets
you collect path records only on the forward or backward path so you
could use all 10 of the records in a G.711 VoIP packet for one
direction).
So I think both mechanisms have there uses, my question would be do
you need to be able to use both at once? or is it ok to only be able
to use one of them at a time?
See above, I think it's ok to use one of them at a time
Maurizio
_______________________________________________
IMRG mailing list
IMRG@ietf.org
https://www1.ietf.org/mailman/listinfo/imrg