[comp.protocols.tcp-ip] collecting and passing IP options to TCP applications

wickham@decwet.dec.com (Charlie Wickham, DECWest Engr. 02-Jan-1990 1705) (01/03/90)

I haven't seen this discussed much, but I'm interested on opinions as
to how IP options should be retained for delivery to a TCP session
user. The host requirements doc sez that implementations should make
options available to user applications. In a datagram world, one could
see where the presentation of options would be pretty
straight-forward: options are presented when the datagram is read.

For connection-oriented sessions, a couple of scenarios come to mind:
1) individual options accumulate until read and 2) option "blocks" are
retained and queued.

With accumulation, an option's value is overwritten when a datagram
arrives with that option. Note that the value maybe the same, in which
case, nothing has changed. When the options are "read" by the
application, the option area is cleared and incoming options start
accumulating again.  This solution provides the least amount of
accuracy since all options are "glommed" together and distinct option
values are not maintained. On the other hand, it provides a simple
mechanism of collecting and conveying the option info.

Retaining the original option blocks provides more accurate
information (no option data is lost), but it would seem to require
some sort of syncronization with the data stream to be really useful
(is that true?). Also, if the data stream is read and there is no
desire to read the options, how should that be handled?

Finally, are there any implementations that present IP options to TCP
users?

thanx,
charlie

wickham@decwet.dec.com

braden@VENERA.ISI.EDU (01/04/90)

	I haven't seen this discussed much, but I'm interested on opinions as
	to how IP options should be retained for delivery to a TCP session
	user. The host requirements doc sez that implementations should make
	options available to user applications. 
	
Charlie,

I think the HR RFC says that the IP layer must pass options to the
transport layer, and that UDP in particular must pass options on the
the application.  TCP is not required or requested to pass IP or TCP
options to the application.

Bob Braden