Subject: Re: (IPng 4011) Re: Qry on Traffic Policing (IPv6 header changes)

From: Matt Crawford <[email-masked]>
Date: Fri, 13 Jun 1997 09:21:38 -0500

> Let's first summarize what has been proposed for this IPv6 header:
> 
> To use one bit for Drop Prefedence, preferable from version field 
> since priority bits are already in use ...

I frequently hear that messing with the version field will ruin
header compression.  I don't know about that myself, but then, "There
has been an alarming increase in the number of things I know nothing
about."  (Ashleigh Brilliant)

					Matt Crawford

---

From: Thomas Narten <[email-masked]>
Date: Fri, 13 Jun 1997 12:15:06 -0400

> header compression.

It will. The header compression folks (specifically,
draft-degermark-ipv6-hc-02.txt) took a look at the version field in
the IP header and concluded: hey, it will always be 4 or 6 -- no other
possible value -- so let's use those bits for our own purposes.
Specifically, they have several types of compressed packets: IPv6
carrying TCP, IPv4/TCP, IPv6/UDP, or something like that (I may have
the details wrong, but that's the basic idea).

One way to do compression is to have a shim layer between what is
being compressed and what is below it, and then have a "type" field in
the shim to identify what specific decompression to use, what "flow"
this packet belongs to (if the compression algorithm is stateful),
etc. But that adds bits to the size of the packet, since all
compressed packets carry the header. To avoid the shim, one could for
each link type (i.e., PPP, Ethernet, etc.), ask for a range of types
that would denote "header compression", with the specific value
denoting a specific type of compression analogous to "type" above.  In
practice, it is difficult to allocate a range of numbers from every
link type you might want to run compression over.

That gets us back to the version field in the IP header. If we assume
that the 4 bits have only 2 values in practice (4 and 6), header
compression can use the other values for its own purposes. That way it
doesn't need a shim (saving a few bytes) or to get multiple type
fields on each link-layer (it steals them directly from the IP
header).

Some would say this is a hack. Whether one wants to allow this sort of
usage of the version field bits is a question worthy of debate. What
is essentially happening is that the header compression folks have
grabbed those bits for their own use. The larger question that should
be considered is whether this particular use of the version field is
better than other potential uses that are (seemingly) being ruled
out-of-hand because they "break header compression".

Thomas