Subject: [rohc] The new ROHC FN...

From: "West, Mark" <[email-masked]>
Date: Sun, 2 Nov 2003 23:19:31 +0000 (GMT Standard Time)

Hi all,

This seems like as good an opportunity as any to summarise the changes
we've made in the notation since last time around...

... and they're pretty substantial!

There is a fundamental change to the philosophy of the notation:
previously we have tried to describe the packet formats and how to
compress each field -- the compressed packet formats were derived in some
(standardised way) from this description.

After some intense discussion, and given that this seemed to involve
standardising some non-trivial algorithms, we have taken an different
approach.  Now, the aim is to describe the uncompressed packet format; the
compressed packet formats; and the mapping between these two.

That is, the notation is now focussed on describing the compressed packet
formats (rather than a description that can be used to generate packet
formats).

It is perhaps easiest to explain the changes by comparison...

Previous form:

	foo ::= bar
	        baz

	bar ::= static / irregular(8)
	baz ::= value(8, 0) / value(8, 1)

would have given rise to the 4 packet formats:

	bar[static] + baz[value(8,0)]
	bar[static] + baz[value(8,1)]
	bar[irregular(8)] + baz[value(8,0)]
	bar[irregular(8)] + baz[value(8,1)]

and probabilities would be used to assign indicators to these formats in
some standardised form (e.g. EPIC or EPIC-lite).

All change!

The new form captures formats: we can define the uncompressed format and
capture (say) 3 packet formats as:

	foo ::= compressed_packet_formats,

	{ co_formats ::= constant(3),

	  % this is the first packet format
	  % note that the 8-bit discriminator is chosen
	  % simply to byte-align the packets...

	  co_format_0 ::= discriminator, % 8 bits

          { discriminator ::= '00000000',
            bar           ::= static,
            baz           ::= value(8,0)
          },

          co_format_1 ::= discriminator, % 8 bits

	  { discriminator ::= '00000001',
	    bar           ::= static,
	    baz           ::= value(8,1)
	  }

	  co_format_2 ::= discriminator, % 7 bits
                          baz,           % 1 bit
                          bar,           % 8 bits

	  { discriminator ::= '0000001',
	     bar          ::= irregular(8),
	     baz          ::= index(8, [0, 1])
                              % 1-bit choice between 0/1
	  }

	  uncompressed_format ::= foo,

	  foo ::= bar, % 8 bits
	          baz  % 8 bits
	}

	[with a fair degree of elision...]

You can see from the above (hopefully!) that there is no need to run any
algorithm to generate packet formats: they are specified in full within
the notation.

In order to allow 'reasoning' about the correctness of the profile, and
for test purposes, there is a prolog implementation to help things
along...

For more details, see the draft!

Comments, as ever, welcome...

... and feel free to collar me for discussions at Minneapolis!

Cheers,

Mark.

-- 
Mark A. West, Senior Consultant Engineer
Roke Manor Research Ltd., Romsey, Hants.  SO51 0ZN
Phone +44 (0)1794 833311   Fax  +44 (0)1794 833433

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc