Subject: RE: [rohc] TCP packet formats (help me!)

From: "Finking, Robert" <[email-masked]>
Date: Thu, 7 Oct 2004 11:36:02 +0100

]On Oct 07 2004, at 12:23 Uhr, Finking, Robert wrote:
]
]> The compressor must be able to distinguish between the two, since they 
]> have two different semantics; the decompressor for the usual reason! 
]> It must always be possible to do this at the compressor end, otherwise 
]> you have an ill defined problem
]
]My view is that it's perfectly legal to have ambiguous compression -- 
]obviously, you can always send an IR but there may be one or more other 
]matches.
]It is a quality of implementation issue, not an issue that needs to be 
]covered in the FN specification, to select a match that results in the 
]smallest number of bits (for this and, likely, for the following 
]packets).
]
]The decompressor, on the other hand, is better not requested to solve a 
]riddle.

Yes, for the case where you are specifying two or more ways of compressing a
*single uncompressed* format I agree totally with this.

I was talking here about distinguishing between *multiple uncompressed*
formats. E.g. if you had two versions of a protocol whose only
distinguishing feature was the version number, and you notated that version
number as being irregular, the compressor wouldn't be able to tell the
difference between them.

Does that make sense?

Raffles

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

---

From: Carsten Bormann <[email-masked]>
Date: Thu, 7 Oct 2004 12:41:45 +0200

> number as being irregular, the compressor wouldn't be able to tell the

Yes, that makes a lot of sense.
There may be other reasons why this is disambiguated.
Even if it is not, there is no conceptual difference between this and 
multiple compressed formats.
You can always transform:

foo === {
	uncompressed_format_1 = a, b;
	uncompressed_format_2 = b, a;
	compressed_format = a, b {
		a ::= ...;
		b ::= ...;
	}
}

into

foo === {
	uncompressed_format = bar;
	compressed_format_1 = bar {
		bar ::= foo1;
	};
	compressed_format_2 = bar {
		bar ::= foo2;
	}
}
foo1 === {
	uncompressed_format = a, b;
	compressed_format = a, b {
		a ::= ...;
		b ::= ...;
	}
}
foo2 === {
	uncompressed_format = b, a;
	compressed_format = a, b {
		a ::= ...;
		b ::= ...;
	}
}

It just happens to be much longer.

Gruesse, Carsten