TCP and IDPR

Robert Woody Woodburn <woody@sparta.com> Mon, 11 May 1992 23:06 UTC

Received: from nri.nri.reston.va.us by ietf.NRI.Reston.VA.US id aa11522; 11 May 92 19:06 EDT
Received: from nri.reston.va.us by NRI.Reston.VA.US id aa21110; 11 May 92 19:12 EDT
Received: from PARK-STREET.BBN.COM by NRI.Reston.VA.US id aa21106; 11 May 92 19:12 EDT
Received: from park-street by PARK-STREET.bbn.COM id aa20155; 11 May 92 18:53 EDT
Received: from BBN.COM by PARK-STREET.BBN.COM id aa20151; 11 May 92 18:52 EDT
Received: from SPARTA.COM by BBN.COM id aa03102; 11 May 92 18:51 EDT
Received: from crusher.SPARTA.COM by sparta.com (5.65/1.34) id AA00439; Mon, 11 May 92 18:56:09 -0400
Received: by crusher (5.65/1.34) id AA00164; Mon, 11 May 92 18:56:07 -0400
Date: Mon, 11 May 92 18:56:07 -0400
From: Robert Woody Woodburn <woody@sparta.com>
Message-Id: <9205112256.AA00164@crusher>
To: msteenst@bbn.com
Cc: idpr-wg@bbn.com, mills@udel.edu
In-Reply-To: msteenst@BBN.COM's message of Mon, 11 May 92 17:29:21 -0400 <9205112155.AA24889@sparta.com>
Subject: TCP and IDPR


    woody was absolutely correct in saying that one of the reasons that we
    did not use TCP as the reliable transport mechanism for IDPR control
    messages was because we did not want to tie IDPR to the TCP/IP
    environment only.  there were other reasons as well.

Martha, I was trying to explain what I thought the motivations had been,
but I didn't necesarrily agree with all of them.  I think I remember that
Dave Mills had problems with any routing protocol using TCP for transport.
I know he wasn't thrilled with BGP using it, but I don't remember his 
argument.  Dave, if you have a chance, maybe you could chime in at this 
point.

Also, if IDPR is seen as an application above the transport, then I see
no reason why it can't speak TCP at the goesinta and TP4 at the goesoutta.
I think the key is allowing the model to be pliable to having tool based
requirements, rather than starting from scratch.  In this paradigm, TCP (or
the DNS or any other existing protocol), becomes a tool for development.
In a multi-stack environment, the tradeoff becomes what features of the 
tools become mandatory vs the availability of the features in other stacks.

    the requirements for reliable IDPR control message transport included:
    - retransmission in response to no acknowledgement.
    - acknowledgement contingent upon message validity checks including
      length check, timestamp check, integrity/authentication value
      check, and valid IDPR control protocol.
    there was no requirement for stream-oriented delivery of information.

Well, perhaps there was no requirement, but TCP certainly handles a lot
of things.  I think the problem is in the terminology and the model used
when describing the mechanisms required by IDPR.  With a reliable stream
transport, the requirement for IDPR ACKs goes away altogether, the U/D 
protocol is replaced by TCP keepalive messages (I'm not sure if TP4 has an 
equivalent, but I would suspect so).

    TCP itself would not be able to perform the IDPR validity checks.
    thus, to get the behavior we wanted, we would have to modify TCP so
    that either it carried options containing timestamps and
    integrity/authentication values and performed the proper IDPR-level
    checks, or it passed the message to IDPR and did not return an ack
    until IDPR determined that the validity checks were correct.  in
    either case, it means modifying TCP.  such modifications to TCP also
    mean that we should disable TCP flow control, which automatically
    reacts to the failure to receive an acknowledgement.

I don't see where TCP ever would need modified.  You're talking about
incorporating functionality required by the IDPR model into a tool,
rather than flowing the model around the tool.  The validation functionality
could be on top of TCP, rather than at the same layer.  I don't see 
a problem.

    as selective retransmission is not generally available with TCP, a
    retransmission may force the retransmission of more than one message,
    depending upon the size of the TCP window.  

In the existing protocols, almost all control messages require an ACK.
Only U/D does not (Hmm, what did I miss...?  Is there any other?).

    moreover, some of these
    retransmitted messages may have been successfully transmitted the
    first time.  this means a certain amount of resource waste.  

Umm, but CMTP is already retransmitting.

    moreover,
    the failure of an individual control message to be properly received
    can cause all messages behind it to wait for proper receipt.  as IDPR
    control messages should be distributed quickly, this retransmission
    delay is not desireable.

Ah, now this is an important point and I agree at first look.  I think there
could be a solid case here for avoiding streams since there are many
different independent messages that should be able to supercede each other.
Although, I'd have to think a bit more to see where this would really be a
problem.  This is probably the weightiest argument against TCP.  However,
maybe we could also think about breaking things up some and use TCP for big
messages and CMTP for small things.

    about fragmentation of large IDPR routing information messages: i am
    not thrilled by the prospect of IP fragmenting and reassembling these
    messages or of the loss of one fragment resulting in the
    retransmission of the whole message.  however, the messages most
    likely to be too big, namely configuration messages, are transmitted
    infrequently.  hence, the extra cost will not be large when amortized
    over all IDPR messages.

Well, TCP certainly avoids the fragmentation problem.

    however, if we believe that frequently transmitted messages, such as
    path setup messages, are likely to require fragmentation, then we
    should seriously think about having IDPR perform its own
    fragmentation.  what do you think?

I tried to think of seem simple ways to do this, but it simply isn't
very simple.  I protest reinventing the wheel of TCP in IDPR.


wood y