SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
qaware.de
Making the internet faster
HTTP/3 und QUIC
Franz Wimmer
franz.wimmer@qaware.de
@zalintyre
Quarkus Quickstart
■ Engineering Camp (internal), 2021
Pentests für Einsteiger – das Metasploit Framework und andere Tools
■ Linux-Stammtisch München, 2020
A deep dive into CockroachDB
■ Cloud Native Night Munich, 2020
Private meets Enterprise: Auswertung von Tinder-Daten
mit Apache Ignite
■ MRMCD Darmstadt, 2018
Leveraging the power of SolrCloud and Spark
with OpenShift
■ Munich Kubernetes/Cloud-Native Meetup 2018
Ransomware vs. Antivirus
■ MRMCD Darmstadt, 2017
Agenda
1. Die Geschichte des WWW
2. HTTP/3 und QUIC
3. Benchmarks
4. Implementierungen
Die Geschichte des WWW
Google IETF
3
Google IETF
2
Autor: Tim Berners-Lee IETF
Version 1
Die Geschichte des WWW
Zeitleiste
5
HTTP 0.9 HTTP 1.0 HTTP 1.1 SPDY HTTP/2 HTTP/3
1991 1996 1997 2012 2015 2013 2019
QUIC
HTTP/0.9: Erster Entwurf
Autor: Tim Berners-Lee, 1991
Anfrage besteht nur aus einer
einzigen Zeile
Der Server antwortet mit einem
Dokument (HTML)
$> telnet google.com 80
Connected to 74.125.xxx.xxx
GET /about/
(hypertext response)
(connection closed)
HTTP/1.0
Ein Response-Status wird
eingeführt (200 / 404 / etc).
Request und Response können
jetzt Header enthalten.
$> telnet website.org 80
Connected to xxx.xxx.xxx.xxx
GET /rfc/rfc1945.txt HTTP/1.0
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Accept: */*
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 01 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 1 May 1996 12:45:26 GMT
Server: Apache 0.84
(plain-text response)
(connection closed)
HTTP/1.1
Eine TCP-Verbindung kann für
mehrere HTTP-Requests
genutzt werden (Connection:
Keep-Alive).
Die Requests erfolgen aber
seriell.
Aushandlung von Content,
Encoding, Sprache, etc.
$> telnet website.org 80
Connected to xxx.xxx.xxx.xxx
GET /index.html HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Cache-Control: max-age=0, no-cache
Transfer-Encoding: chunked
<!DOCTYPE html>
SPDY
SPDY ist ein Tunnel um HTTP/HTTPS.
Requests werden modifiziert.
■ Keine Anpassung der Anwendung nötig.
Features:
■ Kompression
■ HTTP-Header werden nicht mehrfach gesendet
SPDY erfordert die TLS-Extension“Next Protocol Negotiation” (NPN) im Server und im Browser.
SPDY ist deprecated.
HTTP/2
Voll abwärtskompatibel zu HTTP/1.1.
Der Server kann ungefragt Resourcen zum Client pushen.
Der Standard umfasst HTTP und HTTPS.
■ Setzt die TLS-Extension “Application-Layer Protocol Negotiation” (ALPN) voraus.
■ Alle Browser unterstützen mit HTTP/2 nur noch mit TLS.
Kein Head of Line Blocking (HOL) mehr *
Clients fragen immer mit HTTP/1.1 an. HTTP/2 wird deshalb ausgehandelt.
* Im Application Layer
Hilfe, meine Anwendung spricht kein HTTP/2!
Ich will HTTP/2 Server Push
einsetzen, aber mein Appserver
kann das nicht!?
Kein Problem! Nginx als
Frontend-Webserver kann das.
Der Appserver muss nur einen
Link-Header mitsenden:
GET / HTTP/1.1
Host: rosencrime24.de
HTTP/1.1 200 OK
content-type: text/html; charset=UTF-8
Link: </style.css>; as=style; rel=preload
<content>
HTTP/3 und QUIC
Probleme mit HTTP/2 und TCP
HTTP/2 löst nicht das Problem des “TCP Head of
Line Blocking”.
Über eine TCP-Verbindung werden viele
Dokumente übertragen.
Wenn auf dem Weg ein TCP-Paket verloren geht,
wird die ganze Verbindung angehalten.
■ “TCP Retransmission”
QUIC - Quick UDP Internet Connections
QUIC
2012 bei Google entwickelt
Protokoll: UDP, Port 443
Übernimmt Funktionen von TCP und TLS
■ Verbindung wird in Streams aufgeteilt
■ Non-Blocking
■ Es werden weiter korrekte Daten zugestellt, auch wenn ein Stream gerade repariert werden muss
Jedes Paket ist einzeln verschlüsselt
Auf Anwendungsebene implementiert
■ Nicht im Kernel, wie z.B. TCP
Ziel: Overhead beim initialen Handshake reduzieren
Verbindungsaufbau im Vergleich
HTTP/3 – Was nicht mehr geht
Load Balancing / Network Management mit TCP war einfach.
■ Pakete einer TCP-Verbindung landen immer beim richtigen Server (sticky sessions).
Überwachung wird eingeschränkt (mandatory encryption).
Bei UDP gibt es keine Sequenznummer im Header.
■ Die Infrastruktur muss jetzt die Connection ID im QUIC-header beachten.
Benchmarks
Bandbreite und Latenz
Handshake-Performance
Benchmark
■ YU, Alexander; BENSON, Theophilus A. Dissecting Performance of Production QUIC. In:
Proceedings of the Web Conference 2021. 2021. S. 1157-1168
Implementierungen
Implementierungen von HTTP/3
Browser:
■ Chrome (> 87), Firefox (> 88), Edge (> 87) und Opera (> 74) unterstützen HTTP/3
Webserver:
■ nginx: Entwickungsbranch mit QUIC vorhanden
■ Apache: Kein Kommentar zu HTTP/3
■ HAproxy: Implementierung geplant (Mailingliste)
Tools:
■ curl unterstützt HTTP/3 seit Version 7.66.0.
■ wget: Kein Kommentar zu HTTP/3
Quellen
Grafiken:
■ https://ably.com/topic/http3
■ https://kinsta.com/de/blog/http3/
■ https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/129618/QUIC-authors-
copy.pdf
Paper:
■ YU, Alexander; BENSON, Theophilus A. Dissecting Performance of Production QUIC. In:
Proceedings of the Web Conference 2021. 2021. S. 1157-1168.
■ https://cs.brown.edu/~tab/papers/QUIC_WWW21.pdf
qaware.de
QAware GmbH
Aschauer Straße 32
81549 München
Tel. +49 89 232315-0
info@qaware.de
twitter.com/qaware
linkedin.com/company/qaware-gmbh
xing.com/companies/qawaregmbh
slideshare.net/qaware
github.com/qaware
Q & A

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API Gateways
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-LösungMit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
 
Die Leichtigkeit des Seins: Bindings für Eclipse SmartHome entwickeln
Die Leichtigkeit des Seins: Bindings für Eclipse SmartHome entwickelnDie Leichtigkeit des Seins: Bindings für Eclipse SmartHome entwickeln
Die Leichtigkeit des Seins: Bindings für Eclipse SmartHome entwickeln
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConfA Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der Schiene
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit Docker
 
Nginx
NginxNginx
Nginx
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 
Holistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenHolistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice Architekturen
 
Leveraging the Power of Solr with Spark
Leveraging the Power of Solr with SparkLeveraging the Power of Solr with Spark
Leveraging the Power of Solr with Spark
 
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
 
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
 
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-UmfeldEnterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
 
Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance
 

Semelhante a Making the internet faster HTTP/3 und QUIC

Transportsicherheit - SSL und HTTPS
Transportsicherheit - SSL und HTTPSTransportsicherheit - SSL und HTTPS
Transportsicherheit - SSL und HTTPS
Markus Groß
 
TCP – zuverlässiger Ende-zu-Ende-Datenstrom
TCP – zuverlässiger Ende-zu-Ende-DatenstromTCP – zuverlässiger Ende-zu-Ende-Datenstrom
TCP – zuverlässiger Ende-zu-Ende-Datenstrom
Christoph Lange
 

Semelhante a Making the internet faster HTTP/3 und QUIC (20)

HTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterHTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet faster
 
Citrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx NetworkingCitrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx Networking
 
Inside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddlerInside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddler
 
Transportsicherheit - SSL und HTTPS
Transportsicherheit - SSL und HTTPSTransportsicherheit - SSL und HTTPS
Transportsicherheit - SSL und HTTPS
 
Webservices auf Basis von HTTP/2 und Servlet4
Webservices auf Basis von HTTP/2 und Servlet4Webservices auf Basis von HTTP/2 und Servlet4
Webservices auf Basis von HTTP/2 und Servlet4
 
Neuigkeiten von Westermos MRD Mobilfunkroutern
Neuigkeiten von Westermos MRD MobilfunkrouternNeuigkeiten von Westermos MRD Mobilfunkroutern
Neuigkeiten von Westermos MRD Mobilfunkroutern
 
node.js - Eine kurze Einführung
node.js - Eine kurze Einführungnode.js - Eine kurze Einführung
node.js - Eine kurze Einführung
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
 
SoSe 2013 | Basisinformationstechnologie II - 03_Rechnerkommunikation-II
SoSe 2013 | Basisinformationstechnologie II - 03_Rechnerkommunikation-IISoSe 2013 | Basisinformationstechnologie II - 03_Rechnerkommunikation-II
SoSe 2013 | Basisinformationstechnologie II - 03_Rechnerkommunikation-II
 
HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?
 
OSDC 2010 | What's new in Apache 2.4? by Rainer Jung
OSDC 2010 | What's new in Apache 2.4? by Rainer JungOSDC 2010 | What's new in Apache 2.4? by Rainer Jung
OSDC 2010 | What's new in Apache 2.4? by Rainer Jung
 
Fehleranalyse in SCCM
Fehleranalyse in SCCMFehleranalyse in SCCM
Fehleranalyse in SCCM
 
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
 
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
 
Internet Information Services (deutsch)
Internet Information Services (deutsch)Internet Information Services (deutsch)
Internet Information Services (deutsch)
 
DACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdfDACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdf
 
Cloud Native Computing
Cloud Native ComputingCloud Native Computing
Cloud Native Computing
 
Realtime BigData Step by Step mit Lambda, Kafka, Storm und Hadoop
Realtime BigData Step by Step mit Lambda, Kafka, Storm und HadoopRealtime BigData Step by Step mit Lambda, Kafka, Storm und Hadoop
Realtime BigData Step by Step mit Lambda, Kafka, Storm und Hadoop
 
TCP – zuverlässiger Ende-zu-Ende-Datenstrom
TCP – zuverlässiger Ende-zu-Ende-DatenstromTCP – zuverlässiger Ende-zu-Ende-Datenstrom
TCP – zuverlässiger Ende-zu-Ende-Datenstrom
 
Wie nutzen wir Cloud-Infrastruktur @ VSHN.ch
Wie nutzen wir Cloud-Infrastruktur @ VSHN.chWie nutzen wir Cloud-Infrastruktur @ VSHN.ch
Wie nutzen wir Cloud-Infrastruktur @ VSHN.ch
 

Mais de QAware GmbH

"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
QAware GmbH
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
QAware GmbH
 

Mais de QAware GmbH (20)

50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
 
Down the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureDown the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile Architecture
 
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightDer Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
 
Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPKontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
 
Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.
 
Per Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysPer Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API Gateways
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 

Making the internet faster HTTP/3 und QUIC

  • 1. qaware.de Making the internet faster HTTP/3 und QUIC Franz Wimmer franz.wimmer@qaware.de @zalintyre
  • 2. Quarkus Quickstart ■ Engineering Camp (internal), 2021 Pentests für Einsteiger – das Metasploit Framework und andere Tools ■ Linux-Stammtisch München, 2020 A deep dive into CockroachDB ■ Cloud Native Night Munich, 2020 Private meets Enterprise: Auswertung von Tinder-Daten mit Apache Ignite ■ MRMCD Darmstadt, 2018 Leveraging the power of SolrCloud and Spark with OpenShift ■ Munich Kubernetes/Cloud-Native Meetup 2018 Ransomware vs. Antivirus ■ MRMCD Darmstadt, 2017
  • 3. Agenda 1. Die Geschichte des WWW 2. HTTP/3 und QUIC 3. Benchmarks 4. Implementierungen
  • 5. Google IETF 3 Google IETF 2 Autor: Tim Berners-Lee IETF Version 1 Die Geschichte des WWW Zeitleiste 5 HTTP 0.9 HTTP 1.0 HTTP 1.1 SPDY HTTP/2 HTTP/3 1991 1996 1997 2012 2015 2013 2019 QUIC
  • 6. HTTP/0.9: Erster Entwurf Autor: Tim Berners-Lee, 1991 Anfrage besteht nur aus einer einzigen Zeile Der Server antwortet mit einem Dokument (HTML) $> telnet google.com 80 Connected to 74.125.xxx.xxx GET /about/ (hypertext response) (connection closed)
  • 7. HTTP/1.0 Ein Response-Status wird eingeführt (200 / 404 / etc). Request und Response können jetzt Header enthalten. $> telnet website.org 80 Connected to xxx.xxx.xxx.xxx GET /rfc/rfc1945.txt HTTP/1.0 User-Agent: CERN-LineMode/2.15 libwww/2.17b3 Accept: */* HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 01 Dec 1997 16:00:00 GMT Last-Modified: Wed, 1 May 1996 12:45:26 GMT Server: Apache 0.84 (plain-text response) (connection closed)
  • 8. HTTP/1.1 Eine TCP-Verbindung kann für mehrere HTTP-Requests genutzt werden (Connection: Keep-Alive). Die Requests erfolgen aber seriell. Aushandlung von Content, Encoding, Sprache, etc. $> telnet website.org 80 Connected to xxx.xxx.xxx.xxx GET /index.html HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 HTTP/1.1 200 OK Connection: keep-alive Content-Type: text/html; charset=utf-8 Cache-Control: max-age=0, no-cache Transfer-Encoding: chunked <!DOCTYPE html>
  • 9. SPDY SPDY ist ein Tunnel um HTTP/HTTPS. Requests werden modifiziert. ■ Keine Anpassung der Anwendung nötig. Features: ■ Kompression ■ HTTP-Header werden nicht mehrfach gesendet SPDY erfordert die TLS-Extension“Next Protocol Negotiation” (NPN) im Server und im Browser. SPDY ist deprecated.
  • 10. HTTP/2 Voll abwärtskompatibel zu HTTP/1.1. Der Server kann ungefragt Resourcen zum Client pushen. Der Standard umfasst HTTP und HTTPS. ■ Setzt die TLS-Extension “Application-Layer Protocol Negotiation” (ALPN) voraus. ■ Alle Browser unterstützen mit HTTP/2 nur noch mit TLS. Kein Head of Line Blocking (HOL) mehr * Clients fragen immer mit HTTP/1.1 an. HTTP/2 wird deshalb ausgehandelt. * Im Application Layer
  • 11. Hilfe, meine Anwendung spricht kein HTTP/2! Ich will HTTP/2 Server Push einsetzen, aber mein Appserver kann das nicht!? Kein Problem! Nginx als Frontend-Webserver kann das. Der Appserver muss nur einen Link-Header mitsenden: GET / HTTP/1.1 Host: rosencrime24.de HTTP/1.1 200 OK content-type: text/html; charset=UTF-8 Link: </style.css>; as=style; rel=preload <content>
  • 13. Probleme mit HTTP/2 und TCP HTTP/2 löst nicht das Problem des “TCP Head of Line Blocking”. Über eine TCP-Verbindung werden viele Dokumente übertragen. Wenn auf dem Weg ein TCP-Paket verloren geht, wird die ganze Verbindung angehalten. ■ “TCP Retransmission”
  • 14. QUIC - Quick UDP Internet Connections
  • 15. QUIC 2012 bei Google entwickelt Protokoll: UDP, Port 443 Übernimmt Funktionen von TCP und TLS ■ Verbindung wird in Streams aufgeteilt ■ Non-Blocking ■ Es werden weiter korrekte Daten zugestellt, auch wenn ein Stream gerade repariert werden muss Jedes Paket ist einzeln verschlüsselt Auf Anwendungsebene implementiert ■ Nicht im Kernel, wie z.B. TCP Ziel: Overhead beim initialen Handshake reduzieren
  • 17. HTTP/3 – Was nicht mehr geht Load Balancing / Network Management mit TCP war einfach. ■ Pakete einer TCP-Verbindung landen immer beim richtigen Server (sticky sessions). Überwachung wird eingeschränkt (mandatory encryption). Bei UDP gibt es keine Sequenznummer im Header. ■ Die Infrastruktur muss jetzt die Connection ID im QUIC-header beachten.
  • 21. Benchmark ■ YU, Alexander; BENSON, Theophilus A. Dissecting Performance of Production QUIC. In: Proceedings of the Web Conference 2021. 2021. S. 1157-1168
  • 23. Implementierungen von HTTP/3 Browser: ■ Chrome (> 87), Firefox (> 88), Edge (> 87) und Opera (> 74) unterstützen HTTP/3 Webserver: ■ nginx: Entwickungsbranch mit QUIC vorhanden ■ Apache: Kein Kommentar zu HTTP/3 ■ HAproxy: Implementierung geplant (Mailingliste) Tools: ■ curl unterstützt HTTP/3 seit Version 7.66.0. ■ wget: Kein Kommentar zu HTTP/3
  • 24. Quellen Grafiken: ■ https://ably.com/topic/http3 ■ https://kinsta.com/de/blog/http3/ ■ https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/129618/QUIC-authors- copy.pdf Paper: ■ YU, Alexander; BENSON, Theophilus A. Dissecting Performance of Production QUIC. In: Proceedings of the Web Conference 2021. 2021. S. 1157-1168. ■ https://cs.brown.edu/~tab/papers/QUIC_WWW21.pdf
  • 25. qaware.de QAware GmbH Aschauer Straße 32 81549 München Tel. +49 89 232315-0 info@qaware.de twitter.com/qaware linkedin.com/company/qaware-gmbh xing.com/companies/qawaregmbh slideshare.net/qaware github.com/qaware Q & A