[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [rohc] Role and approach of the ROHC formal notation
> > I think what we came up with is a little different -- it
> > describes the meaning of compressed headers in terms of
> > the uncompressed headers.
>
> Ok, how does the context(s) come into the picture?
Hi,
More specifically, the notation defines a function whose inputs
are the uncompressed header and the context, and whose outputs
are the compressed header and an updated version of the context.
What might be confusing about this function is that it's
defined in terms of "oracles" - perhaps this is the source of
the confusion between defining the candidate compressed header
formats, and actually compressing the headers?
Oracle functions aren't too complicated - I've explained a
bit more about them below.
> > > 2) Richard is confusing compressing headers with
> > > defining the candidate compressed header formats.
> > >
> > Well, the compressed header formats are in some way related
> > to the uncompressed packet.
>
> Sure, I would not expect otherwise...=)
>
> > The notation captures this relationship. The notation can
> > use an oracle function to be able to derive more than one
> > packet format based on the same uncompressed packet.
>
> Ok, now we are getting somewhere. Can you elaborate a little
> bit on the "oracle" issue? Actually, can you define exactly
> what you mean with "oracle", maybe draw some parallel with
> well known things, like 3095?
An "oracle" function is just a function which returns an
implementation-specific value. Whenever the compressed header
formats offer a choice for implementers, the notation calls
an oracle function to find out what choice the implementer
wants to make.
A good example from 3095 is the implementation-specific choice
we make when selecting which packet format to use. The three
steps that need to be taken are as follows:
1. Pick which packet format to use.
2. Output some indicator bits to tell the decompressor which
choice you made.
3. Compress the header using the chosen packet format.
Step 1 is an implementation-specific choice, so when we're
defining a set of packet formats using the formal notation, we
call an oracle function to tell us which choice to make. We
then convert the output of the oracle function into bits and
stick it onto the front of the compressed header.