Subject: [tsvwg] Negotiation Bar-BOF at Hiroshima IETF

From: Janardhan Iyengar <[email-masked]>
Date: Sun, 01 Nov 2009 11:34:18 -0500

(Apologies for cross-posting)

Dear all,

We have planned a "Negotiation" Bar-BOF session at the Hiroshima IETF, with the goal of identifying  mechanisms for negotiating among multiple protocol possibilities within and across layers. I am re-circulating (see below) a draft Charter that describes the goals of this Bar-BOF in more detail.

Where: Castleview 1
When: Tuesday, 1300-1500  (there is a meeting in there until 1300, so we may start a bit past 1300)

I am planning to have a presentation to lay out some thoughts on the negotiation problem  (I will do this presentation in TSVAREA as well), and open up the floor for discussion as to what the right directions and foci within the IETF should be.

Please let me know if you'd like a slot to present in this Bar-BOF (name, title, duration), and please come over if you have any thoughts or ideas to share.

Draft Charter:

A major challenge the Internet faces in the evolution to and deployment of new protocols is enabling upgraded hosts to detect efficiently whether a would-be communication partner supports the new protocols, and automatically fall back on older protocols if not.  If the upgraded host first attempts to use the new protocol and falls back to the old protocol only after the former attempt fails, the host risks incurring long timeout delays on connection that are highly visible and annoying to users, greatly decreasing the likeliness that users, operating system vendors, or application vendors will adopt the new protocols.  If the upgraded host attempts connections using the new and old protocols simultaneously, the host wastes resources both in the network (redundant initialization packets) and on the end hosts (redundant transport control blocks when multiple connection attempts succeed but only one is needed).

Some inefficiency due to concurrent connection attempts is probably tolerable and perhaps unavoidable in the interest of enabling negotiation without risking long startup delays, but this approach alone will not scale in the long term, for two reasons.  First, the number of alternative protocols among which to negotiate may increase over time.  If an application can run atop TCP, SCTP, or DCCP, then negotiating among them may incur the network and end host costs of three redundant connections, not just two.

Second, negotiation is often needed at multiple layers simultaneously.  At the network layer, to enable deployment of IPv6 without risking poor user experiences, a host needs to be able to try connecting via IPv6 but fall back to IPv4 if necessary without incurring long delays.  At the application layer, applications often need to decide whether to operate with or without TLS, which can be problematic if the original application protocol was not designed to support TLS negotiation and was not assigned a separate port number for its TLS variant, or an application may wish to negotiate efficiently between multiple similar or equivalent application protocols without the user's involvement: e.g., POP3 versus IMAP, SIP versus IAX2.  If a host tries to make negotiation decisions for each layer serially (i.e., first choose IPv4 or IPv6, then TCP versus SCTP versus DCCP, then SIP versus IAX2), then it risks even longer connection delays.  If a host tries to make all such negotiation 
decisions in parallel via simultaneous connection attempts, then the combinations multiply across layers: e.g., with two alternatives at the network layer, two at the transport layer, and two at the application layer, a host will be attempting eight simultaneous connection attempts, an explosion that will quickly become infeasible.

The task of the proposed Negotiation (NEGO) BOF will explore the development and specification of both short-term and longer-term solutions to this negotiation problem.  Short-term work would address specific common cases that are of some immediate urgence, such as negotiating efficiently between the IPv4 and IPv6 versions of a single TCP-based application protocol such as HTTP - a problem that is urgent because of the imminent exhaustion of the IPv4 address space.  Longer-term work would be to develop a negotiation mechanism addressing the scalability problems discussed above.  Technical details such as whether this negotiation mechanism would operate out-of-band (e.g., via DNS) or in-band (directly between the hosts wishing to communicate) will have to be decided within the group.

Tentative work items, vaguely in order from short-term to long-term:
	- Best current practice(?) on negotiating between the IPv4 and IPv6 versions of a single transport and application protocol.
	- Specification of generic, extensible negotiation protocol or framework ("Nego")
	- Spec for using Nego to migrate to new transports with fallback to TCP
	- Spec for using Nego to migrate to new transports with fallback to UDP
	- Spec for using Nego to negotiate use of transport with vs without TLS/DTLS
	- Spec for using Nego to negotiate among application-layer protocols

Reference materials:
	- "Happy Eyeballs: Successful Introduction of New Technology to HTTP"
		http://tools.ietf.org/html/draft-wing-http-new-tech-00
	- "A la carte: Announcing the supported transport protocols via DNS"
		http://www.ietf.org/id/draft-yourtchenko-tran-announce-dns-00
	- "An Efficient Cross-Layer Negotiation Protocol"
		http://bford.info/pub/net/nego.pdf

Thanks,
- jana

-- 
Janardhan Iyengar
Assistant Professor, Computer Science
Franklin & Marshall College
http://www.fandm.edu/jiyengar