QUIC - Quick UDP Internet Connections ======================================= .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is QUIC?** QUIC (Quick UDP Internet Connections) is a modern transport layer network protocol developed by Google and later standardized by the IETF. It is designed to improve the performance of connection-oriented web applications, especially over unreliable networks. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is QUIC useful?** * Faster Connection Establishment : QUIC combines the handshake and encryption setup into a single step, reducing latency. * Built-in Encryption : QUIC uses TLS 1.3 by default, ensuring secure communication without needing separate layers. * Reduced Latency for Web Applications: Especially beneficial for HTTP/3, which runs over QUIC. * Better Performance on Mobile Networks: QUIC handles packet loss and network changes more gracefully. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * Client sends initial packet with QUIC and TLS handshake combined. * Server responds with its handshake and encryption keys. * Secure connection is established in 1 round-trip (or 0-RTT if previously connected). * Data is exchanged over multiple independent streams. * Connection adapts to network changes without restarting. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is QUIC used?** * HTTP/3 (the latest version of HTTP) is built on QUIC. * Google services (like Gmail, YouTube, Search). * Facebook, Cloudflare, Akamai, and other major platforms. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why OSI Layer: Transport Layer (Layer 4)?** * The OSI model is responsible for end-to-end communication between devices. * It ensures that data is delivered reliably, in order, and without duplication. * QUIC fits into this layer because it provides all these services — and more — over UDP. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What are the key features?** * Built on UDP. * Faster Handshake (0-RTT or 1-RTT). * Multiplexed Streams. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What are the benefits of QUIC?** * Lower latency. * Faster handshakes. * Connection migration. * Built-in encryption. * Multiplexed streams. * No TCP head-of-line blocking. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which protocols run over QUIC?** * HTTP/3 (latest web protocol). * gQUIC (Google’s older implementation). * HTTP/3 is the first widely adopted application-layer protocol built on QUIC. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why was QUIC created?** To solve issues in HTTP/2 and TCP, such as: * Head-of-line blocking at the transport layer. * Slow handshakes. * Lack of built-in encryption at the transport level. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is QUIC faster than TCP?** Yes — QUIC is faster than TCP in most real-world cases, especially on: * Mobile networks. * High-latency or lossy networks. It eliminates the slow TCP + TLS handshake process. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is the working flow of QUIC?** Client sends QUIC packet over UDP: * No need to set up a TCP connection. * It sends a QUIC Initial packet over UDP with TLS 1.3 handshake included. Server responds with TLS and QUIC setup: * Server replies with its own QUIC packet + TLS handshake response. * Both encryption and connection are established in just 1 round-trip. Connection is now ready: * After handshake, both client and server start exchanging encrypted data. * No extra steps like in TCP + TLS. Multiplexed streams are used: * Data is sent in multiple parallel streams within a single QUIC connection. * Streams don’t block each other (unlike TCP). Loss recovery & congestion control: * QUIC has built-in packet loss detection and congestion control. * No reliance on TCP mechanisms. Connection can migrate (mobile networks): * If IP changes (e.g., switch from Wi-Fi to mobile), QUIC uses a connection ID to continue the session without reconnecting. Session ends normally: * When done, client or server sends a CLOSE frame. * Connection is securely and cleanly terminated. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is QUIC suitable for real-time applications?** Yes — Real-Time Use Cases Suitable for QUIC: * Live video streaming. * Chat/messaging apps. * VoIP (Voice over IP). .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`QUIC Version&RFC Details ` * :ref:`QUIC Basic Setup on Ubuntu using IPv4 ` * :ref:`QUIC Basic Setup on Ubuntu using IPv6 ` * :ref:`QUIC Protocol Packet Details ` * :ref:`QUIC Usecases ` * :ref:`QUIC Basic Features ` * :ref:`QUIC Feature : Bulit On UDP ` * :ref:`QUIC Feature : Integrated TLS1.3 ` * :ref:`QUIC Feature : 0 RTT Connection Resumption ` * :ref:`QUIC Feature : Multiplexing Without Head Of Line Blocking ` * :ref:`QUIC Feature : Connection Migration ` * :ref:`QUIC Feature : Forward Error Correction ` * :ref:`QUIC Feature : Encrypted Headers And Payload ` * :ref:`QUIC Feature : Low Latency Handshake ` * :ref:`QUIC Feature : Stream Prioritization ` * :ref:`QUIC Feature : Bulit In Congestion ` * :ref:`Reference links ` .. _QUIC_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _QUIC_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _QUIC_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _QUIC_step5: .. tab-set:: .. tab-item:: QUIC Version&RFC Details .. csv-table:: :file: ./QUIC/QUIC_RFCdetails.csv :widths: 10,10,10,30,40 :header-rows: 1 .. _QUIC_step20: .. tab-set:: .. tab-item:: QUIC Basic Setup on Ubuntu using IPv4 * setup .. _QUIC_step21: .. tab-set:: .. tab-item:: QUIC Basic Setup on Ubuntu using IPv6 * setup .. _QUIC_step6: .. tab-set:: .. tab-item:: QUIC Protocol Packet Details **QUIC INITIAL Packet** .. csv-table:: :file: ./QUIC/QUIC_Intial_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **QUIC HANDSHAKE Packet** .. csv-table:: :file: ./QUIC/QUIC_Handshake_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **QUIC 0 RTT Packet** .. csv-table:: :file: ./QUIC/QUIC_0_RTT_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **QUIC RETRY Packet** .. csv-table:: :file: ./QUIC/QUIC_Retry_Packet.csv :widths: 10,20,30,40 :header-rows: 1 **QUIC SHORT HEADER Packet** .. csv-table:: :file: ./QUIC/QUIC_short_Header_Packet.csv :widths: 10,20,30,40 :header-rows: 1 .. _QUIC_step7: .. tab-set:: .. tab-item:: QUIC Usecases .. csv-table:: :file: ./QUIC/QUIC_Use_Cases.csv :widths: 10,20,30 :header-rows: 1 .. _QUIC_step8: .. tab-set:: .. tab-item:: QUIC Basic Features .. csv-table:: :file: ./QUIC/QUIC_Features.csv :widths: 10,10,30 :header-rows: 1 .. _QUIC_step9: .. tab-set:: .. tab-item:: QUIC Feature : Bulit On UDP **Bulit On UDP - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature1_Bulit_on_UDP_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step10: .. tab-set:: .. tab-item:: QUIC Feature : Integrated TLS1.3 **Integrated TLS1.3 - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature2_Integrated_TLS1.3_Test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step11: .. tab-set:: .. tab-item:: QUIC Feature : 0 RTT Connection **0 RTT Connection - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature3_0_RTT_connection_resumption_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step12: .. tab-set:: .. tab-item:: QUIC Feature : Multiplexing Without Head Of Line Blocking **Multiplexing Without Head Of Line Blocking - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature4_Multiplexing_without_head_of_line_blocking_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step13: .. tab-set:: .. tab-item:: QUIC Feature : Connection Migration **Connection Migration - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature5_Connection_Migration_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step14: .. tab-set:: .. tab-item:: QUIC Feature : Forward Error Correction **Forward Error Correction - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature6_Forward_Error_Correction_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step15: .. tab-set:: .. tab-item:: QUIC Feature : Encrypted Headers And Payload **Encrypted Headers And Payload - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature7_Encrypted_Headers_and_payload_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step16: .. tab-set:: .. tab-item:: QUIC Feature : Low Latency Handshake **Low Latency Handshake - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature8_Low_Latency_Handshake_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step17: .. tab-set:: .. tab-item:: QUIC Feature : Stream Prioritization **Stream Prioritization - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature9_stream_prioritization_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step18: .. tab-set:: .. tab-item:: QUIC Feature : Bulit In Congestion **Bulit In Congestion - Testcases** .. csv-table:: :file: ./QUIC/QUIC_Feature10_Bulit_in_congestion_Test_Cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _QUIC_step19: .. tab-set:: .. tab-item:: Reference links * Reference links