Subject: Teaching materials for QUIC

From: Jan Rüth <[email-masked]>
Date: Mon, 16 Mar 2020 10:37:27 +0000

Hi,

QUIC is becoming more and more mature, and deployments are on the rise.
We believe it is important to teach about QUIC and its mechanisms in University.

To this end, we would like to include QUIC into our basic data communication lecture and advanced courses, and I was wondering if others already did so and if they are willing to share their materials.

I would also be very happy regarding feedback from the QUIC working group regarding content that they believe a basic data comm. lecture or an advanced course should cover.
Especially regarding mechanisms that warrant an in-depth discussion, for example, those that you believe are fundamentally different from how TCP does things.

To share some material: Lars gave a very nice introduction talk to QUIC during one of our advanced courses during the winter term 2017/2018 which is openly available here
https://video.fsmpi.rwth-aachen.de/17ws-quic/12107

Best
 Jan

---

From: Robin MARX <[email-masked]>
Date: Mon, 16 Mar 2020 13:04:30 +0100

Hello Jan,

I agree QUIC should be taught in universities. I am also interested in
teaching materials from others.

At UHasselt, I've been giving one introductory lecture (1.5 hours) to 3rd
year students during their first Computer Networking course for the past 2
years.
That course contains an introduction to the full stack, mainly HTTP/1.1,
TCP/UDP, IP and the lower layers, but very little in terms of HTTP/2 and no
mention of TLS.
Especially this last item has required a bit of creativity when explaining
QUIC.
I mainly focus on why it's needed, some of the differences from TCP and
then discuss new features/options (0-RTT, pluggable CC, migration +
multipath, anti-amplification, etc.).
My slides can be found here:
https://quic.edm.uhasselt.be/files/CN_QUIC_RobinMarx_1920.pdf
The students received two exam questions on QUIC (why is it needed/why over
UDP + how does migration work?) and both were generally filled out quite
well, indicating they are able to grok the basic concepts at least.

In one of our master courses (2nd year), QUIC is a (small) assignment as
part of a "web performance" section of the course.
Here, I let students set up their own local QUIC stack (aioquic is
recommended) and run some basic HTTP/3 requests, also with 0-RTT.
I don't really explain QUIC or HTTP/3 in detail prior to this: the idea is
that students examine the logs from the implementation themselves and have
to explain what's going on without having to read the entire spec.
They are encouraged to use qlog and qvis (https://qvis.edm.uhasselt.be/)
for this of course ;)
Here however, the results are much more nuanced: some students do this
really well and are able to extract the basic handshake/framing concepts.
Others fail utterly and try to map TCP/TLS concepts too directly and don't
understand the concept of frames.

Next to that, we have had multiple bachelor and master theses on a variety
of concepts (multipath, load balancing, congestion control, prioritization,
HTTP/3 implementation, ...).
In general, even bachelor students have been able to pick up the concepts
much more quickly and more in-depth than I would have estimated 1-2 years
back.
They typically require some help up-front getting started with the basic
concepts (which I do explain in detail), but after that they're able to use
the specification texts quite efficiently.

Finally, I've been doing talks at conferences for several years now, with
the intent to not just teach our students but also the broader community.
The contents range from quite high-level to very detailed, and my students
have found them interesting to watch when getting started with the topic
(or they're afraid to tell me otherwise)
https://www.youtube.com/watch?v=B1SQFjIXJtc : Why QUIC is needed and
differences with TCP
https://www.youtube.com/watch?v=pq_xk_Pecu4 : practical deployment
considerations for QUIC and HTTP/3 (and HTTP/2)
https://www.youtube.com/watch?v=nH4iRpFnf1c : in-depth discussion on HTTP/2
and HTTP/3 resource prioritization
https://www.youtube.com/watch?v=mDc2kHPtavE : very deep dive into the
details from QUIC/H3 implementation experience
https://www.youtube.com/watch?v=W3xiMq5A0i0 : A critical look at QUIC
Other talks I typically recommend to my students:
https://www.youtube.com/watch?v=8lYHNzoPS2o : Subodh Iyengar's EPIQ keynote
on practical deployment at Facebook
https://www.youtube.com/watch?v=izk4nbuzPuU : Daniel Stenberg's high-speed
overview of QUIC and HTTP/3 basics
https://www.youtube.com/watch?v=BazWPeUGS8M : Jana Iyengar's talk on Google
QUIC

Finally, much of our work on qlog and qvis has been motivated by making
QUIC and HTTP/3 easier to understand, not just for implementers and
debuggers, but also for students.
Especially my thesis students have been using it extensively and seem to
get at least some benefit out of the tools.
I would very much like to see others using our tools to help teach students
and am more than willing to work together on this and to expand qvis/qlog
to make this easier.

With best regards,
Robin

On Mon, 16 Mar 2020 at 11:38, Jan Rüth <[email-masked]>
wrote:

> To this end, we would like to include QUIC into our basic data
> communication lecture and advanced courses, and I was wondering if others
> already did so and if they are willing to share their materials.
>
> I would also be very happy regarding feedback from the QUIC working group
> regarding content that they believe a basic data comm. lecture or an
> advanced course should cover.
> Especially regarding mechanisms that warrant an in-depth discussion, for
> example, those that you believe are fundamentally different from how TCP
> does things.
>
> To share some material: Lars gave a very nice introduction talk to QUIC
> during one of our advanced courses during the winter term 2017/2018 which
> is openly available here

-- 

Robin Marx
PhD researcher - web performance
Expertise centre for Digital Media

T +32(0)11 26 84 79 - GSM +32(0)497 72 86 94

www.uhasselt.be
Universiteit Hasselt - Campus Diepenbeek
Agoralaan Gebouw D - B-3590 Diepenbeek
Kantoor EDM-2.05

---

From: Simon Pietro Romano <[email-masked]>
Date: Mon, 16 Mar 2020 13:16:38 +0100

Hi,

I give an introduction to QUIC in one of my classes at the University of Napoli. Here are the slides (very high level) I used last time I did this lecture:

http://wpage.unina.it/spromano/SharedDocs/AT_L21_QUIC.pdf

Cheers,

Simon

                     				            _\\|//_
                           				   ( O-O )
      ~~~~~~~~~~~~~~~~~~~~~~o00~~(_)~~00o~~~~~~~~~~~~~~~~~~~~~~~~
                    				Simon Pietro Romano
             				 Universita' di Napoli Federico II
                		     Computer Engineering Department 
	             Phone: +39 081 7683823 -- Fax: +39 081 7683816
                                           e-mail: [email-masked]

		    <<Molti mi dicono che lo scoraggiamento è l'alibi degli 
		    idioti. Ci rifletto un istante; e mi scoraggio>>. Magritte.
               			                     oooO
       ~~~~~~~~~~~~~~~~~~~~~~~(   )~~~ Oooo~~~~~~~~~~~~~~~~~~~~~~~~~
					                 \ (            (   )
			                                  \_)          ) /
                                                                       (_/

> Il giorno 16 mar 2020, alle ore 13:04, Robin MARX <[email-masked]> ha scritto:
> 
> Hello Jan,
> 
> I agree QUIC should be taught in universities. I am also interested in teaching materials from others. 
> 
> At UHasselt, I've been giving one introductory lecture (1.5 hours) to 3rd year students during their first Computer Networking course for the past 2 years.
> That course contains an introduction to the full stack, mainly HTTP/1.1, TCP/UDP, IP and the lower layers, but very little in terms of HTTP/2 and no mention of TLS. 
> Especially this last item has required a bit of creativity when explaining QUIC.
> I mainly focus on why it's needed, some of the differences from TCP and then discuss new features/options (0-RTT, pluggable CC, migration + multipath, anti-amplification, etc.)..
> My slides can be found here: https://quic.edm.uhasselt.be/files/CN_QUIC_RobinMarx_1920.pdf <https://quic.edm.uhasselt.be/files/CN_QUIC_RobinMarx_1920.pdf>
> The students received two exam questions on QUIC (why is it needed/why over UDP + how does migration work?) and both were generally filled out quite well, indicating they are able to grok the basic concepts at least.
> 
> In one of our master courses (2nd year), QUIC is a (small) assignment as part of a "web performance" section of the course. 
> Here, I let students set up their own local QUIC stack (aioquic is recommended) and run some basic HTTP/3 requests, also with 0-RTT. 
> I don't really explain QUIC or HTTP/3 in detail prior to this: the idea is that students examine the logs from the implementation themselves and have to explain what's going on without having to read the entire spec. 
> They are encouraged to use qlog and qvis (https://qvis.edm.uhasselt.be/ <https://qvis.edm.uhasselt.be/>) for this of course ;) 
> Here however, the results are much more nuanced: some students do this really well and are able to extract the basic handshake/framing concepts. Others fail utterly and try to map TCP/TLS concepts too directly and don't understand the concept of frames.
> 
> Next to that, we have had multiple bachelor and master theses on a variety of concepts (multipath, load balancing, congestion control, prioritization, HTTP/3 implementation, ...).
> In general, even bachelor students have been able to pick up the concepts much more quickly and more in-depth than I would have estimated 1-2 years back. 
> They typically require some help up-front getting started with the basic concepts (which I do explain in detail), but after that they're able to use the specification texts quite efficiently. 
> 
> Finally, I've been doing talks at conferences for several years now, with the intent to not just teach our students but also the broader community. 
> The contents range from quite high-level to very detailed, and my students have found them interesting to watch when getting started with the topic (or they're afraid to tell me otherwise)
> https://www.youtube.com/watch?v=B1SQFjIXJtc <https://www.youtube.com/watch?v=B1SQFjIXJtc> : Why QUIC is needed and differences with TCP 
> https://www.youtube.com/watch?v=pq_xk_Pecu4 <https://www.youtube.com/watch?v=pq_xk_Pecu4> : practical deployment considerations for QUIC and HTTP/3 (and HTTP/2)
> https://www.youtube.com/watch?v=nH4iRpFnf1c <https://www.youtube.com/watch?v=nH4iRpFnf1c> : in-depth discussion on HTTP/2 and HTTP/3 resource prioritization
> https://www.youtube.com/watch?v=mDc2kHPtavE <https://www.youtube.com/watch?v=mDc2kHPtavE> : very deep dive into the details from QUIC/H3 implementation experience
> https://www.youtube.com/watch?v=W3xiMq5A0i0 <https://www.youtube.com/watch?v=W3xiMq5A0i0> : A critical look at QUIC
> https://www.youtube.com/watch?v=8lYHNzoPS2o <https://www.youtube.com/watch?v=8lYHNzoPS2o> : Subodh Iyengar's EPIQ keynote on practical deployment at Facebook
> https://www.youtube.com/watch?v=izk4nbuzPuU <https://www.youtube.com/watch?v=izk4nbuzPuU> : Daniel Stenberg's high-speed overview of QUIC and HTTP/3 basics
> https://www.youtube.com/watch?v=BazWPeUGS8M <https://www.youtube.com/watch?v=BazWPeUGS8M> : Jana Iyengar's talk on Google QUIC 
> 
> Finally, much of our work on qlog and qvis has been motivated by making QUIC and HTTP/3 easier to understand, not just for implementers and debuggers, but also for students.
> Especially my thesis students have been using it extensively and seem to get at least some benefit out of the tools. 
> I would very much like to see others using our tools to help teach students and am more than willing to work together on this and to expand qvis/qlog to make this easier. 
> 
> With best regards,
> Robin
> 
> 
> 
> On Mon, 16 Mar 2020 at 11:38, Jan Rüth <[email-masked] <mailto:[email-masked]>> wrote:
> Hi,
> 
> https://video.fsmpi.rwth-aachen.de/17ws-quic/12107 <https://video.fsmpi.rwth-aachen.de/17ws-quic/12107>
> 
> 
> Best
>  Jan
> 
> 
> -- 
> 
> Robin Marx
> www.uhasselt.be <http://www.uhasselt.be/>