NFtR: QUIC Working Group Day Two
Wednesday, October 4th. Seattle, WA.
Whereas during yesterday’s early morning sally I braved the 48-degree weather to reach the southern end of Lake Union, today I explored the Queen Anne district in a different direction. From my hotel, situated at the corner of 5th and Roy, I walked briskly south toward the Space Needle. The morning was bright and gentle, the air fresh, and the sights of the friendly city entertained my eyes. My mind searched, involuntarily, for some European city — perhaps even a city from my childhood — that Seattle reminded me of. In a daydream, I arrived at the foot of the Space Needle and snapped a picture (the sun was hitting it perfectly). From there, I walked west and down toward the Elliott Bay. From the Olympic Sculpture Park, I headed north along the shore toward the F5 Network towers (this is where the working group meets). After a pleasant (sans dodging one kamikaze cyclist) ten-minute walk I arrived at my destination at 9:06 am.
The attendance was higher than the day before. Very few seats remained empty, as almost fifty people were in the room. During the rushed introductions — I wish people would take their time so that I could see them and write down their and their employers’ names — I heard two more large companies not mentioned in my previous blog post: BBC and Symantec. QUIC is gathering a lot of attention.
Jana Iyengar’s (Google) Connection Termination presentation was first. A mere eight slides, it engendered three hours of debates:
- What is the difference between application close and immediate close?
- Which two purposes was the PING frame originally meant to serve?
- Are we using transport mechanisms to solve application problems?
- And so on…
Detailed explanations of the above are beyond the scope of this post. Suffice it to say, there are enough intricacies here to nourish anyone’s inner pedant. Nevertheless, I felt that a lot of the discussion was centered on figuring out what the terms actually mean rather than the exposition of the problems and their possible solutions. It may be useful to have a glossary of terms to go along with a presentation such as this one. The glossary would be learned beforehand by the participants. That would save a lot of time.
At the peak of the Connection Termination debates, the queue that Mark Nottingham — who, along with Lars Eggert, chairs the working group — maintained on the whiteboard at times grew to eight or nine entries! That’s nine people who are waiting in line to speak, be it to ask a new question or to address a previous point.
As the arguments dragged on, Mark treated us to some comic relief. The talk was about what happens to a connection’s buffer queues when it is terminated: Do these queues get drained? If yes, when? The number of people who wanted to speak was large — and so was the queue on the whiteboard. Now, the job of the chair is to keep the meeting focused and on time. To that effect, Mark quipped: “Let’s drain this queue and then continue the [Connection Termination] discussion.” Ha!
I found myself nodding several times when Praveen Balasubramanian (Microsoft) contrasted QUIC behavior with that of TCP. During one of the breaks I chatted with him and Nick Banks (Microsoft) about TCP and QUIC. It is a wonderful sensation to converse with people who understand you half way before you finish your sentence.
We continued to talk about Connection Termination some more after lunch, until about 1:30 pm, at which time the conference was nudged to switch to the next topic: streams.
Now, I don’t know what the heart of QUIC is, but streams are its soul. Without streams, QUIC is as inanimate as a browned, day-old banana peel. First, Mike Bishop (Microsoft) in his presentation argued that we should “more or less keep streams as they are:” that is, bidirectional with a relatively rich set of frames to specify which end should stop sending. Then, Eric Rescorla (Mozilla) — whom most people at the conference address by his nom de guerre, EKR (pronounced Ecker) — reported on unidirectional streams. EKR reimplemented the bidirectional streams of Minq as a pair of unidirectional streams. He reported on some of the gotchas and the apparent pros and cons of each approach.
The discourse then veered into an almost surreal talk of unidirectional streams that are unpaired, paired, and paired to more than one stream. In other words, having no arity, having 1:1 arity, and having 1:N arity, respectively. Our brains went into overdrive and I could see that people were struggling (or, at least, I hope that it was not just me alone) to grasp all the implications of having this arity buffet available to the application.
There were many interesting idea exchanges and back-and-forth arguments. I tried to jot down things I did not know about, so that I can research them later. This author even piped in two or three times and, I dare to say, contributed to the discussion in a meaningful way.
* * *
It has been a long day and it has been a long post. Tomorrow is the final day of the conference. Good night.
P. S. I had the good fortune to be seated next to Alan Frindell (Facebook). Having found out that he was a Seattleite, I hurried to express the way I felt about his city during one of the breaks. I told him about the friendly people, the natural beauty of the place, the bike lanes. To top it all off, I said: “And you have a bookstore, man! A bookstore!” Alan looked at me and asked: “Which one do you mean? We have several.” O, Alan! I don’t like Seattle anymore: I love it.