APACHECON North America Sept. 9-12, 2019
HTTP/2, HTTP/3 and SSL/TLSHTTP/2, HTTP/3 and SSL/TLS
State of theState of the ArtArt in Our Serversin Our Servers
Jean-Frederic ClereJean-Frederic Clere
APACHECON North America
What I will coverWhat I will cover
●
HTTP/3
●
HTTP/2
●
HTTP/2 and ALPN
●
Servers
●
Apache HTTPD
●
Tomcat
●
Traffic server
●
Demos
●
Questions?
2
APACHECON North America
Who I amWho I am
Jean-Frederic Clere
Red Hat
Years writing JAVA code and server software
Tomcat committer since 2001
Doing OpenSource since 1999
Cyclist/Runner etc
Lived 15 years in Spain (Barcelona)
Now in Neuchâtel (CH)
3
APACHECON North America
HTTP/3 (March 2018, in progress!)HTTP/3 (March 2018, in progress!)
– Use QUIC / TLS-1.3 / UDP
– To transport HTTP like HTTP/2
– Initial connection TPC + Alt-Svc
●
Response Alt-Svc: h3=":56666":
– problems:
●
UDP ports closed
●
UDP slower than TPC in Kernels
●
Needs extra CPU (?)
– Specifications:
●
Several RFC (6 RFC)
4
APACHECON North America
HTTP/3 implementations:
– Curl (http3-direct and Alt-Svc way)
– Libraries
● ngtcp2
● quiche
– Apache Tomcat: Problem UDP socket API incomplete
– Apache HTTPD: need time probably like http/2
– Traffic Server: planed for the next version (end 2019)
● See ATS proto / curl demo
APACHECON North America
HTTP/3 more info:
– Demo ATS / curl
– Playing browsers:
● test browser
● Interop matrix
● chrome activation
APACHECON North America
Why HTTP/2Why HTTP/2
– HTTP/1.1: June 1999 (RFC 2616)
●
1999:
– 1 page ~ 1kB HTML
●
2019:
– 1 page ~ 3MB HTML + IMAGES + JS + CSS etc
– Protocol:
●
Not adapted / inefficient / etc
7
APACHECON North America
HTTP/2 generalHTTP/2 general
●
HTTP/2:
– Binary
– Frame
– Multiplex
– Based on SPDY
– TLS everywhere:
●
Browers use https and strong ciphers
– No forward proxy
– h2c: Clear text only with reverse proxy (proxy to back-end server)
8
APACHECON North America
HTTP/2 generalHTTP/2 general
●
Two specifications:
– Hypertext Transfer Protocol version 2 - RFC7540
– HPACK - Header Compression for HTTP/2 - RFC7541
●
By the Internet Engineering Task Force
●
ALPN Application-Layer Protocol Negotiation - RFC 7301
9
APACHECON North America
HTTP/2 MultiplexedHTTP/2 Multiplexed
10
Headers
Data
Headers
Headers
Headers Data Data
Headers Data Data
HeadersData
Headers
APACHECON North America
HTTP/2 : moreHTTP/2 : more
●
HTTP headers compression
– ~ 80 % save
●
Request priority
– Both sides
●
Server Push
– Prevent round trip to get element of a page
– Faster / better rendering on browsers.
11
APACHECON North America
HTTP/2 With BrowsersHTTP/2 With Browsers
●
Browser with HTTP/2 and TLS
– FireFox 34
– Chrome 40 (with ALPN before was NPN)
– IE 11
– Opera and Safari 9
●
Stats from docs.trafficserver and ci.trafficserver:
– 80% is over HTTP/2 (data from last year)
●
→ go for it now!
12
APACHECON North America
ALPN Client Hello (Firefox)ALPN Client Hello (Firefox)
13
APACHECON North America
ALPN Server Hello (tomcat)ALPN Server Hello (tomcat)
14
APACHECON North America
RequirementsRequirements
●
OpenSSL for our 3 servers
– At least 1.0.2c
●
Tomcat (8.5 / trunk)
– Tomcat-native (1.2.6 / trunk) or java9
●
Httpd (2.4.17 / trunk)
– HTTP/2 C Library (libnghttp2)
●
TrafficServer (since ATS v5.3.2).
– Nothing except openssl.
15
APACHECON North America
StatusStatus
●
Tomcat (trunk/8.5)
– Full support / released as stable.
– Needs servlet 4.0 (JSR 369) for server PUSH API
– Can't be full JAVA until JDK9 (ALPN support)
●
Httpd (available since 2.4.17)
– Full support (since 2.4.20)
●
TrafficServer (since 5.3.0) (flow control 6.1)
– Priorities (6.2.0) and Server PUSH (7.0.0)
16
APACHECON North America
TC connector server.xmlTC connector server.xml
<Connector
port="8002"
scheme="https"
SSLEnabled="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLCertificateFile="/home/jfclere/CERTS/newcert.pem"
SSLCertificateKeyFile="/home/jfclere/CERTS/newkey.txt.pem"
protocol="org.apache.coyote.http11.Http11AprProtocol">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<Connector/>
<Connector port="8003" protocol="HTTP/1.1"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf/.keystore" keystorePass="changeit"
socket.directBuffer="true" socket.directSslBuffer="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
APACHECON North America
Tomcat / configurationTomcat / configuration
In bin/setenv.sh:
LD_LIBRARY_PATH=/home/jfclere/tomcat-native/native/.libs
export LD_LIBRARY_PATH
And the libtcnative-1.so linked with openssl-1.0.2c, checking with ldd:
libssl.so.1.0.0 => /home/jfclere/OPENSSL-1.0.2c/lib/libssl.so.1.0.0 (0x00007f6ab147b000)
libcrypto.so.1.0.0 => /home/jfclere/OPENSSL-1.0.2c/lib/libcrypto.so.1.0.0 (0x00007f6ab1028000)
libapr-1.so.0 => /home/jfclere/APR-1.4.x/lib/libapr-1.so.0 (0x00007f6ab0dfa000)
Usually the openssl of recent distribution (fedora 23) will work.
18
APACHECON North America
Tomcat / PerformancesTomcat / Performances
19
4KiB.bin
8KiB.bin
16KiB.bin
32KiB.bin
64KiB.bin
128KiB.bin
256KiB.bin
512KiB.bin
1MiB.bin
0
50000
100000
150000
200000
250000
300000
350000
400000
Concurency 240
coyote_nio_jsse_h1_https
coyote_nio_jsse_h2_https
File Size
Kbytes/second
APACHECON North America
Tomcat / PerformancesTomcat / Performances
20
4KiB
8KiB
16KiB
32KiB
64KiB
128KiB
256KiB
512KiB
1MiB
0
10
20
30
40
50
60
70
80
90
Concurency 240
coyote_nio_jsse_h1_https
coyote_nio_jsse_h2_https
File Size
CPUUsage
APACHECON North America
Tomcat / DemoTomcat / Demo
●
No server push (may be change it: SimpleImagePush)
●
Multiplexing
●
headers compression
●
HTML page:
– That requires a lot (~1000) of (~4Kbytes) images to render.
21
APACHECON North America
TrafficServer / ConfigurationTrafficServer / Configuration
●
records.config
– CONFIG proxy.config.ssl.number.threads INT 0
– CONFIG proxy.config.http.server_ports STRING 8888:ssl
– CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
– CONFIG proxy.config.http2.enabled INT 1
– CONFIG proxy.config.ssl.TLSv1_1 INT 1
– CONFIG proxy.config.ssl.TLSv1_2 INT 1
●
ssl_multicert.config:
– dest_ip=* ssl_cert_name=newcert.pem ssl_key_name=newkey.txt.pem
●
remap.config:
– map / http://127.0.0.1:8080
●
ip_allow.config:
– src_ip=192.168.1.38 action=ip_allow method=ALL
– src_ip=::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff action=ip_allow method=ALL
22
APACHECON North America
TrafficServer / DemoTrafficServer / Demo
●
Like tomcat one
●
Uses http/1.1 tomcat nio connector on 8080
as back-end.
23
APACHECON North America
HTTPd / ConfigurationHTTPd / Configuration
●
httpd.conf:
LoadModule h2_module modules/mod_h2.so
Listen 8006
<VirtualHost *:8006>
Protocols h2 http/1.1
ProtocolsHonorOrder on
SSLEngine on
SSLCertificateFile "/home/jfclere/CERTS/newcert.pem"
SSLCertificateKeyFile "/home/jfclere/CERTS/newkey.pem"
SSLCACertificateFile "/etc/pki/CA/cacert.pem"
</VirtualHost>
24
APACHECON North America
HTTPd / PerformancesHTTPd / Performances
25
4KiB.bin
8KiB.bin
16KiB.bin
32KiB.bin
64KiB.bin
128KiB.bin
256KiB.bin
512KiB.bin
1MiB.bin
0
50000
100000
150000
200000
250000
300000
350000
400000
Concurency 240
httpd_h1_https
httpd_h2_https
File Size
KBytes/second
APACHECON North America
HTTPd / PerformancesHTTPd / Performances
26
4KiB 8KiB 16KiB 32KiB 64KiB 128KiB 256KiB 512KiB 1MiB
0
10
20
30
40
50
60
70
80
Concurency 240
httpd_h1_https
httpd_h2_https
File Szie
CPUusage
APACHECON North America
HTTPd / Configuration proxyHTTPd / Configuration proxy
●
httpd.conf:
LoadModule http2_module modules/mod_http2.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so
Listen 8006
<VirtualHost *:8006>
Protocols h2 http/1.1
ProtocolsHonorOrder on
SSLEngine on
…
ProxyPass "/" "h2c://localhost:8003/"
</VirtualHost>
27
APACHECON North America
HTTPd / DemoHTTPd / Demo
●
Like the tomcat one:
– htdocs/http2.html
– htdocs/images/ the images.
28
APACHECON North America
HTTP/2 ready?HTTP/2 ready?
●
Conclusion:
– Using HTTP/2 without PUSH is already good.
– “safer” crypto is good but expensive.
– No need to rewrite application to get the gains.
HTTP/2 : GO FOR IT
29
APACHECON North America
Questions?Questions?
Thank you!Thank you!
●
jfclere@gmail.com
●
users@tomcat.apache.org
●
users@httpd.apache.org
●
users@trafficserver.apache.org
●
https://http2.github.io/
●
Demo generator: https://github.com/jfclere/h2_demos
●
HTTP/3 see curl docs: http3-explained by Daniel
30
THANK YOU
Jean-Frederic Clere
@jfclere
jfclere@gmail.com

More Related Content

PDF
From a cluster to the Cloud
PDF
TomcatCon: from a cluster to the cloud
PDF
Apache Httpd and TLS certificates validations
PDF
Tomcat from a cluster to the cloud on RP3
PPTX
Introduction to Haproxy
PDF
Anatomy of neutron from the eagle eyes of troubelshoorters
PDF
How happy they became with H2O/mruby and the future of HTTP
PPTX
Troubleshooting containerized triple o deployment
From a cluster to the Cloud
TomcatCon: from a cluster to the cloud
Apache Httpd and TLS certificates validations
Tomcat from a cluster to the cloud on RP3
Introduction to Haproxy
Anatomy of neutron from the eagle eyes of troubelshoorters
How happy they became with H2O/mruby and the future of HTTP
Troubleshooting containerized triple o deployment

What's hot (19)

PDF
Apache httpd reverse proxy and Tomcat
PPTX
How to Troubleshoot OpenStack Without Losing Sleep
PDF
Linux Networking Explained
PDF
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
PDF
Acus08 Advanced Load Balancing Apache2.2
PDF
Improving the ZFS Userland-Kernel API with Channel Programs - BSDCAN 2017 - M...
PDF
Neutron Network Namespaces and IPtables--A Technical Deep Dive
ODP
Snaps on open suse
PDF
debugging openstack neutron /w openvswitch
PDF
Load Balancing MySQL with HAProxy - Slides
PDF
Understanding docker networking
PPTX
Nomad + Flatcar: a harmonious marriage of lightweights
PDF
IPTABLES Introduction
PDF
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
PDF
iptables 101- bottom-up
PDF
青云CoreOS虚拟机部署kubernetes
PPTX
Commication Framework in OpenStack
PDF
LF_OVS_17_OvS manipulation with Go at DigitalOcean
PDF
Web scale infrastructures with kubernetes and flannel
Apache httpd reverse proxy and Tomcat
How to Troubleshoot OpenStack Without Losing Sleep
Linux Networking Explained
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
Acus08 Advanced Load Balancing Apache2.2
Improving the ZFS Userland-Kernel API with Channel Programs - BSDCAN 2017 - M...
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Snaps on open suse
debugging openstack neutron /w openvswitch
Load Balancing MySQL with HAProxy - Slides
Understanding docker networking
Nomad + Flatcar: a harmonious marriage of lightweights
IPTABLES Introduction
SREConEurope15 - The evolution of the DHCP infrastructure at Facebook
iptables 101- bottom-up
青云CoreOS虚拟机部署kubernetes
Commication Framework in OpenStack
LF_OVS_17_OvS manipulation with Go at DigitalOcean
Web scale infrastructures with kubernetes and flannel
Ad

Similar to HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers (20)

PDF
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
PDF
HTTP/2 and SSL/TLS state of art in ASF servers
PDF
HTTP/3 where are we now? State of the art in our servers.
PPTX
PDF
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
PDF
HTTP/2 (2017)
PDF
HTTP/2: What's new?
PPTX
What's New in HTTP/2
PDF
Tomcat next
PDF
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
PPTX
Next generation web protocols
PDF
A New Internet? Introduction to HTTP/2, QUIC and DOH
PPTX
Http2 Security Perspective
PDF
Tomcat next
PDF
Learning HTTP 2 a practical guide for beginners First Edition Garza
PPTX
In a HTTP/2 World - DeccanRubyConf 2017
PDF
HTTP/2 turns 3 years old // Web Performance Meetup wao.io 20180612
PPTX
Web protocol.pptx
PPTX
Linux confau 2019: Web Security 2019
PDF
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
HTTP/2 and SSL/TLS state of art in ASF servers
HTTP/3 where are we now? State of the art in our servers.
HTTP2 in action - Piet Van Dongen - Codemotion Amsterdam 2017
HTTP/2 (2017)
HTTP/2: What's new?
What's New in HTTP/2
Tomcat next
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
Next generation web protocols
A New Internet? Introduction to HTTP/2, QUIC and DOH
Http2 Security Perspective
Tomcat next
Learning HTTP 2 a practical guide for beginners First Edition Garza
In a HTTP/2 World - DeccanRubyConf 2017
HTTP/2 turns 3 years old // Web Performance Meetup wao.io 20180612
Web protocol.pptx
Linux confau 2019: Web Security 2019
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
Ad

More from Jean-Frederic Clere (13)

PDF
FFM / Panama: A case study with OpenSSL and Tomcat
PDF
Having fun with a solar panel, camera and Apache projects.pdf
PDF
PDF
03_clere_Proxing to tomcat with httpd.pdf
PDF
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
PDF
Cloud RPI4 tomcat ARM64
PDF
Apache httpd and TLS/SSL certificates validation
PDF
Juggva cloud
PDF
Having fun with Raspberry(s) and Apache projects
PDF
Tomcat openssl
PDF
Having fun with Raspberry and Apache projects
PDF
Native 1.2.8
PDF
Tomcat openssl
FFM / Panama: A case study with OpenSSL and Tomcat
Having fun with a solar panel, camera and Apache projects.pdf
03_clere_Proxing to tomcat with httpd.pdf
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
Cloud RPI4 tomcat ARM64
Apache httpd and TLS/SSL certificates validation
Juggva cloud
Having fun with Raspberry(s) and Apache projects
Tomcat openssl
Having fun with Raspberry and Apache projects
Native 1.2.8
Tomcat openssl

Recently uploaded (20)

PDF
E-Commerce Website Development Companyin india
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PPTX
4Seller: The All-in-One Multi-Channel E-Commerce Management Platform for Glob...
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
Cybersecurity: Protecting the Digital World
PPTX
Matchmaking for JVMs: How to Pick the Perfect GC Partner
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
DOC
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
PPTX
Python is a high-level, interpreted programming language
PPTX
Trending Python Topics for Data Visualization in 2025
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
AI Guide for Business Growth - Arna Softech
PPTX
most interesting chapter in the world ppt
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
E-Commerce Website Development Companyin india
DNT Brochure 2025 – ISV Solutions @ D365
4Seller: The All-in-One Multi-Channel E-Commerce Management Platform for Glob...
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Wondershare Recoverit Full Crack New Version (Latest 2025)
Cybersecurity: Protecting the Digital World
Matchmaking for JVMs: How to Pick the Perfect GC Partner
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
Python is a high-level, interpreted programming language
Trending Python Topics for Data Visualization in 2025
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
AI Guide for Business Growth - Arna Softech
most interesting chapter in the world ppt
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
BoxLang Dynamic AWS Lambda - Japan Edition

HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers

  • 1. APACHECON North America Sept. 9-12, 2019 HTTP/2, HTTP/3 and SSL/TLSHTTP/2, HTTP/3 and SSL/TLS State of theState of the ArtArt in Our Serversin Our Servers Jean-Frederic ClereJean-Frederic Clere
  • 2. APACHECON North America What I will coverWhat I will cover ● HTTP/3 ● HTTP/2 ● HTTP/2 and ALPN ● Servers ● Apache HTTPD ● Tomcat ● Traffic server ● Demos ● Questions? 2
  • 3. APACHECON North America Who I amWho I am Jean-Frederic Clere Red Hat Years writing JAVA code and server software Tomcat committer since 2001 Doing OpenSource since 1999 Cyclist/Runner etc Lived 15 years in Spain (Barcelona) Now in Neuchâtel (CH) 3
  • 4. APACHECON North America HTTP/3 (March 2018, in progress!)HTTP/3 (March 2018, in progress!) – Use QUIC / TLS-1.3 / UDP – To transport HTTP like HTTP/2 – Initial connection TPC + Alt-Svc ● Response Alt-Svc: h3=":56666": – problems: ● UDP ports closed ● UDP slower than TPC in Kernels ● Needs extra CPU (?) – Specifications: ● Several RFC (6 RFC) 4
  • 5. APACHECON North America HTTP/3 implementations: – Curl (http3-direct and Alt-Svc way) – Libraries ● ngtcp2 ● quiche – Apache Tomcat: Problem UDP socket API incomplete – Apache HTTPD: need time probably like http/2 – Traffic Server: planed for the next version (end 2019) ● See ATS proto / curl demo
  • 6. APACHECON North America HTTP/3 more info: – Demo ATS / curl – Playing browsers: ● test browser ● Interop matrix ● chrome activation
  • 7. APACHECON North America Why HTTP/2Why HTTP/2 – HTTP/1.1: June 1999 (RFC 2616) ● 1999: – 1 page ~ 1kB HTML ● 2019: – 1 page ~ 3MB HTML + IMAGES + JS + CSS etc – Protocol: ● Not adapted / inefficient / etc 7
  • 8. APACHECON North America HTTP/2 generalHTTP/2 general ● HTTP/2: – Binary – Frame – Multiplex – Based on SPDY – TLS everywhere: ● Browers use https and strong ciphers – No forward proxy – h2c: Clear text only with reverse proxy (proxy to back-end server) 8
  • 9. APACHECON North America HTTP/2 generalHTTP/2 general ● Two specifications: – Hypertext Transfer Protocol version 2 - RFC7540 – HPACK - Header Compression for HTTP/2 - RFC7541 ● By the Internet Engineering Task Force ● ALPN Application-Layer Protocol Negotiation - RFC 7301 9
  • 10. APACHECON North America HTTP/2 MultiplexedHTTP/2 Multiplexed 10 Headers Data Headers Headers Headers Data Data Headers Data Data HeadersData Headers
  • 11. APACHECON North America HTTP/2 : moreHTTP/2 : more ● HTTP headers compression – ~ 80 % save ● Request priority – Both sides ● Server Push – Prevent round trip to get element of a page – Faster / better rendering on browsers. 11
  • 12. APACHECON North America HTTP/2 With BrowsersHTTP/2 With Browsers ● Browser with HTTP/2 and TLS – FireFox 34 – Chrome 40 (with ALPN before was NPN) – IE 11 – Opera and Safari 9 ● Stats from docs.trafficserver and ci.trafficserver: – 80% is over HTTP/2 (data from last year) ● → go for it now! 12
  • 13. APACHECON North America ALPN Client Hello (Firefox)ALPN Client Hello (Firefox) 13
  • 14. APACHECON North America ALPN Server Hello (tomcat)ALPN Server Hello (tomcat) 14
  • 15. APACHECON North America RequirementsRequirements ● OpenSSL for our 3 servers – At least 1.0.2c ● Tomcat (8.5 / trunk) – Tomcat-native (1.2.6 / trunk) or java9 ● Httpd (2.4.17 / trunk) – HTTP/2 C Library (libnghttp2) ● TrafficServer (since ATS v5.3.2). – Nothing except openssl. 15
  • 16. APACHECON North America StatusStatus ● Tomcat (trunk/8.5) – Full support / released as stable. – Needs servlet 4.0 (JSR 369) for server PUSH API – Can't be full JAVA until JDK9 (ALPN support) ● Httpd (available since 2.4.17) – Full support (since 2.4.20) ● TrafficServer (since 5.3.0) (flow control 6.1) – Priorities (6.2.0) and Server PUSH (7.0.0) 16
  • 17. APACHECON North America TC connector server.xmlTC connector server.xml <Connector port="8002" scheme="https" SSLEnabled="true" ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" SSLCertificateFile="/home/jfclere/CERTS/newcert.pem" SSLCertificateKeyFile="/home/jfclere/CERTS/newkey.txt.pem" protocol="org.apache.coyote.http11.Http11AprProtocol"> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <Connector/> <Connector port="8003" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf/.keystore" keystorePass="changeit" socket.directBuffer="true" socket.directSslBuffer="true"> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> </Connector>
  • 18. APACHECON North America Tomcat / configurationTomcat / configuration In bin/setenv.sh: LD_LIBRARY_PATH=/home/jfclere/tomcat-native/native/.libs export LD_LIBRARY_PATH And the libtcnative-1.so linked with openssl-1.0.2c, checking with ldd: libssl.so.1.0.0 => /home/jfclere/OPENSSL-1.0.2c/lib/libssl.so.1.0.0 (0x00007f6ab147b000) libcrypto.so.1.0.0 => /home/jfclere/OPENSSL-1.0.2c/lib/libcrypto.so.1.0.0 (0x00007f6ab1028000) libapr-1.so.0 => /home/jfclere/APR-1.4.x/lib/libapr-1.so.0 (0x00007f6ab0dfa000) Usually the openssl of recent distribution (fedora 23) will work. 18
  • 19. APACHECON North America Tomcat / PerformancesTomcat / Performances 19 4KiB.bin 8KiB.bin 16KiB.bin 32KiB.bin 64KiB.bin 128KiB.bin 256KiB.bin 512KiB.bin 1MiB.bin 0 50000 100000 150000 200000 250000 300000 350000 400000 Concurency 240 coyote_nio_jsse_h1_https coyote_nio_jsse_h2_https File Size Kbytes/second
  • 20. APACHECON North America Tomcat / PerformancesTomcat / Performances 20 4KiB 8KiB 16KiB 32KiB 64KiB 128KiB 256KiB 512KiB 1MiB 0 10 20 30 40 50 60 70 80 90 Concurency 240 coyote_nio_jsse_h1_https coyote_nio_jsse_h2_https File Size CPUUsage
  • 21. APACHECON North America Tomcat / DemoTomcat / Demo ● No server push (may be change it: SimpleImagePush) ● Multiplexing ● headers compression ● HTML page: – That requires a lot (~1000) of (~4Kbytes) images to render. 21
  • 22. APACHECON North America TrafficServer / ConfigurationTrafficServer / Configuration ● records.config – CONFIG proxy.config.ssl.number.threads INT 0 – CONFIG proxy.config.http.server_ports STRING 8888:ssl – CONFIG proxy.config.url_remap.pristine_host_hdr INT 1 – CONFIG proxy.config.http2.enabled INT 1 – CONFIG proxy.config.ssl.TLSv1_1 INT 1 – CONFIG proxy.config.ssl.TLSv1_2 INT 1 ● ssl_multicert.config: – dest_ip=* ssl_cert_name=newcert.pem ssl_key_name=newkey.txt.pem ● remap.config: – map / http://127.0.0.1:8080 ● ip_allow.config: – src_ip=192.168.1.38 action=ip_allow method=ALL – src_ip=::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff action=ip_allow method=ALL 22
  • 23. APACHECON North America TrafficServer / DemoTrafficServer / Demo ● Like tomcat one ● Uses http/1.1 tomcat nio connector on 8080 as back-end. 23
  • 24. APACHECON North America HTTPd / ConfigurationHTTPd / Configuration ● httpd.conf: LoadModule h2_module modules/mod_h2.so Listen 8006 <VirtualHost *:8006> Protocols h2 http/1.1 ProtocolsHonorOrder on SSLEngine on SSLCertificateFile "/home/jfclere/CERTS/newcert.pem" SSLCertificateKeyFile "/home/jfclere/CERTS/newkey.pem" SSLCACertificateFile "/etc/pki/CA/cacert.pem" </VirtualHost> 24
  • 25. APACHECON North America HTTPd / PerformancesHTTPd / Performances 25 4KiB.bin 8KiB.bin 16KiB.bin 32KiB.bin 64KiB.bin 128KiB.bin 256KiB.bin 512KiB.bin 1MiB.bin 0 50000 100000 150000 200000 250000 300000 350000 400000 Concurency 240 httpd_h1_https httpd_h2_https File Size KBytes/second
  • 26. APACHECON North America HTTPd / PerformancesHTTPd / Performances 26 4KiB 8KiB 16KiB 32KiB 64KiB 128KiB 256KiB 512KiB 1MiB 0 10 20 30 40 50 60 70 80 Concurency 240 httpd_h1_https httpd_h2_https File Szie CPUusage
  • 27. APACHECON North America HTTPd / Configuration proxyHTTPd / Configuration proxy ● httpd.conf: LoadModule http2_module modules/mod_http2.so LoadModule proxy_http2_module modules/mod_proxy_http2.so Listen 8006 <VirtualHost *:8006> Protocols h2 http/1.1 ProtocolsHonorOrder on SSLEngine on … ProxyPass "/" "h2c://localhost:8003/" </VirtualHost> 27
  • 28. APACHECON North America HTTPd / DemoHTTPd / Demo ● Like the tomcat one: – htdocs/http2.html – htdocs/images/ the images. 28
  • 29. APACHECON North America HTTP/2 ready?HTTP/2 ready? ● Conclusion: – Using HTTP/2 without PUSH is already good. – “safer” crypto is good but expensive. – No need to rewrite application to get the gains. HTTP/2 : GO FOR IT 29
  • 30. APACHECON North America Questions?Questions? Thank you!Thank you! ● jfclere@gmail.com ● users@tomcat.apache.org ● users@httpd.apache.org ● users@trafficserver.apache.org ● https://http2.github.io/ ● Demo generator: https://github.com/jfclere/h2_demos ● HTTP/3 see curl docs: http3-explained by Daniel 30