SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Apache Tomcat NEXT
Progress Report
Jean-Frederic Clere, Manager, Red Hat
2
AGENDA
• Who I am
• New features from specifications
• Tomcat specific new features
• Tomcat features removed
• Internal changes
• Why Apache Tomcat 8.5?
• HTTP/2 and ALPN
• SNI
• OpenSSLImplementation
• Migration from 8.0 to 8.5
• Get involved
• Questions
3
Who 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)
4
Tomcat
5
Tomcat versions
Tomcat
Java
EE
Minimum
Java SE
Servlet JSP EL WebSocket JASPIC
1st
Stable
Release
EOL
5.x 4 1.4 2.4 2.0 N/A N/A N/A 08 2004 09 2012
6.x 5 5 2.5 2.1 2.1 N/A N/A 02 2007 12 2016
7.x 6 6 3.0 2.2 2.2 1.1 N/A 01 2011 TBD
8.0.x 7 7 3.1 2.3 3.0 1.1 N/A 02 2014 xx 2016?
8.5.x 7 7 3.1 2.3 3.0 1.1 1.1 06 2016 TBD
9.x 8 8 4.0 2.4? 3.1? 2.0? 1.1? 2017 TBD
xx: was 09 in June ;-) 8.0.38 released 11 October
6
New features from specifications
JavaEE 8
●
Key elements
●
HTTP/2
●
Simplification
●
Better integration for managed beans
●
Better infrastructure for the cloud
7
Specifications
Servlet 4.0
●
HTTP/2
●
Usability improvements
●
HttpFilter, default methods
●
Clarifications
●
Enhancement requests
8
Specifications
HTTP/2
●
HTTP/2 requires some TLS features
●
Server Name Indication (SNI)
●
Application Layer Protocol Negotiation (ALPN)
●
Full support
●
8.5.3 considered stable. (since June 2016)
●
h2c available (for proxies)
●
h2 requires APR/native/OpenSSL due to ALPN
requirements
●
Server push available
9
Specifications
Servlet 4.0 HTTP/2
●
Java EE 8 must run on Java 8
●
Java EE 8 requires Servlet 4.0
●
Servlet 4.0 requires HTTP/2
●
HTTP/2 requires ALPN
●
Java 8 does not support ALPN
●
ALPN support will be available in Java 9
●
ALPN support will likely be backported to Java 8 at some
point...
10
Specifications
Other
●
WebSocket 1.2 (keep 1.1?)
●
Standard extension for compression/multiplexing?
●
JSP 2.4 (keep 2.3?)
●
Imports to clarify (EL 3.0 related)
●
EL 3.1 (keep 3.0?)
●
Only minor improvements/clarifications needed
●
JASPIC 1.1 (New!)
●
Java Authentication Service Provider Interface for
Containers. Used to support Oauth (login)
11
Tomcat New Features
TLS support improvements (1)
●
Major rewrite of TLS support
●
Tomcat 8 supports
●
one TLS virtual host per connector
●
one certificate per virtual host
●
Tomcat 9 supports
●
multiple virtual hosts per connector (SNI)
●
multiple certificates per virtual host
●
TLS configuration has changed to support this
12
Tomcat New Features
TLS support improvements (2)
●
SNI and multiple certificates supported by all connectors
●
APR/native support via the OpenSSL API
●
JSSE support via parsing the initial handshake
●
ALPN supported by APR/native or OpenSSLImplementation
●
JSSE support is currently TBD
●
Common (where possible) configuration for all connectors
●
Some JSSE / OpenSSL differences remain.
●
OpenSSL engine option of NIO and NIO2 connectors
• Allows OpenSSL performance with NIO/NIO2 APIs
• Use automatically when tc-native is installed.
13
Tomcat Removed Features
Old blocking O/I connectors...
●
BIO HTTP and BIO AJP connectors
●
Websocket and Servlet 3.1 require non-blocking IO
●
Emulation of non-blocking is bad:
• Complex
• Not scalable
• Risky: stuff that might break.
• Decision remove them.
• Still 3 connectors:
• NIO default connector
• NIO2 introduced in Tomcat 8.0
• APR/Native still available. (requires tomcat-native libraries)
14
Tomcat Removed Features
Comet
●
Proprietary interface for asynchronous I/O
●
Users are moving (have moved) to WebSocket
●
Adds complexity to all the connectors
●
Therefore decided to remove it
15
Internal Changes
Connectors
●
Removed
●
BIO
●
Comet
●
Reduce duplication
●
HTTP upgrade from 12 classes to 3
●
HTTP/1.1 cleanup = removed ~ 50% (~2500 loc)
●
AJP 1.3 cleanup = remove ~ 30%
●
No connector specific HTTP/2 code
●
Implementation specific per connector → Endpoint
●
Implementation specific per connection → SocketWrapper
16
Internal Changes
Websocket
● Refactored I/O implementation
● Direct to Tomcat’s I/O layer
● Not via Servlet 3.1 non-blocking API
● Simpler
● Faster
● Extension support likely to require further refactoring?
17
Internal Changes
Other
● Remove use of system properties for configuration
● Move to per Context / Host / Server / Connector
● keep the system property as a default
● Made RFC 6265 CookieProcessor the default
● Note UTF-8 extension
18
Why Tomcat 8.5?
EE8 late...
● Tomcat 9 stable release is tied to the release of Java EE 8
● Java EE 8 has been repeatedly delayed
● Currently delayed until at least H1 2017
● Don't want users to have to wait another year+ to get
access our new features:
● HTTP/2
● OpenSSL encryption for JSSE
● TLS virtual hosting
● JASPIC
● Hence, Tomcat 8.5...
19
What is Tomcat 8.5?
Tomcat 9.0.0.M4...
● Started from Apache Tomcat 9.0.0M4
● Reverted all Servlet 4.0 API changes
● Reworked code that required Java 8
● Tomcat specific Push Server API
● Configuration compatible with 8.0.x
● “big” removal:
● Comet (migrate to WebSocket)
● BIO (Connector… probably not noticed)
20
Tomcat 8.5 timing
Possible roadmap
● ~6 months of 8.0.x and 8.5.x
● Extended if needed.
● ~ one month between releases
● ~ after no more 8.0.x releases
● First 8.5 release 24 March 2016
● Current release: 8.5.6 stable
● Expect last 8.0.x soon: no date yet!
21
Why HTTP/2
– HTTP/1.1: June 1999 (RFC 2616)
●
1999:
– 1 page ~ 1kB HTML
●
2015:
– 1 page ~ 3MB HTML + IMAGES + JS + CSS etc
– Protocol:
●
Not adapted / inefficient / etc
22
HTTP/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)
23
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
24
HTTP/2 MultiplexedHTTP/2 Multiplexed
Headers
Data
Headers
Headers
Headers Data Data
Headers Data Data
HeadersData
Headers
25
HTTP/2 : more
• HTTP headers compression
• ~ 80 % saved
• Request priority
• Both sides
• Server Push
• Prevents round trips to get page elements.
• Faster / better rendering on browsers.
26
HTTP/2 When 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:
• More than 50% is over HTTP/2 (data from April)
• → go for it now!
27
ALPN Client Hello (Firefox)
28
ALPN Server Hello (tomcat)
29
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>
<Connector
port="8004"
protocol="org.apache.coyote.http11.Http11AprProtocol">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
30
Tomcat / 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.
31
Tomcat / Performances
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
32
Tomcat / Performances
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
33
Tomcat / Demo
• No server push (may be change it: SimpleImagePush)
• Multiplexing
• headers compression
• Page html page:
• That requires a lot (~1000) of (~4Kbytes) images to
render.
34
SNI Client Hello (Firefox)
35
TC connector server.xmlTC connector server.xml
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
SSLEnabled="true" maxThreads="150" secure="true" scheme="https"
defaultSSLHostConfigName="local1.com" port="8443" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig honorCipherOrder="false" hostName="local1.com" >
<Certificate certificateKeyFile="conf/local1.key"
certificateFile="conf/local1.crt"
type="RSA" />
</SSLHostConfig>
<SSLHostConfig honorCipherOrder="false" hostName="local2.com">
<Certificate certificateKeyFile="conf/local2.key"
certificateFile="conf/local2.crt"
type="RSA" />
</SSLHostConfig>
</Connector>
36
Tomcat / Demo
• 2 pairs of key/certificate
• local1.com
• local2.com
• /etc/hosts
• 127.0.0.1 localhost local1.com local2.com
• SNI allows to select the right key/certificate
37
Why a new SSLImplementation
• JSSE:
• Very slow
• Missing features: like ALPN (JEP 244: TLS Application-Layer Protocol
Negotiation)
• Hardware acceleration used to be very partial (like AES in early java8)
• Native connector:
• Fast but a lot of native code
• Use OpenSSL for SSL/TLS.
• New OpenSSL implemetation:
• Fast.
• Uses only a OpenSSL for native code (no native socket, poller etc).
• Works with NIO and NIO2.
• Uses OpenSSL for SSL/TLS. (warp, unwarp, handshake etc).
41
TC connector server.xmlTC connector server.xml
OLD NATIVE CONNECTOR WAY:
<Connector
port="8002"
scheme="https"
SSLEnabled="true"
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/>
NEW OPENSSLImplementation WAY: (AprLifecycleListener" with SSLEngine="on" + tcnative libs)
<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>
42
Migration from Apache Tomcat 8.0.x
● Aiming to make it a seamless process for most users
● Some users will have some work to do
● Configuration files can be re-used
● Will need migration to use new TLS features
● Some removed features will not be replaced
● Comet (Stick with final 8.0, revert 7.0 or migrate WebSocket)
● Work arounds may be added for some removed features
● BIO
● Removed deprecated code may be restored
● Manager, Context, RealmBase
43
GET INVOLVED
Help is welcomed ;-)
• SVN:
• http://svn.apache.org/repos/asf/tomcat/tc8.5.x/trunk/
• http://svn.apache.org/repos/asf/tomcat/trunk/
• MAIL LISTS:
• dev@tomcat.apache.org Dev list.
• users@tomcat.apache.org Users list.
• WIKI:
• http://wiki.apache.org/tomcat/FrontPage
THANK YOU
jfclere@gmail.com

Más contenido relacionado

La actualidad más candente

ops300 Week9 feedback
ops300 Week9 feedbackops300 Week9 feedback
ops300 Week9 feedbacktrayyoo
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikEdgar Espina
 
Building Applications on Avalanche
Building Applications on AvalancheBuilding Applications on Avalanche
Building Applications on AvalancheKlaraOrban
 
Tomcat Clustering
Tomcat ClusteringTomcat Clustering
Tomcat Clusteringgouthamrv
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 erapeychevi
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPAltitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPFastly
 
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2Load Impact
 
Managing Open vSwitch Across a Large Heterogenous Fleet
Managing Open vSwitch Across a Large Heterogenous FleetManaging Open vSwitch Across a Large Heterogenous Fleet
Managing Open vSwitch Across a Large Heterogenous Fleetandyhky
 
SwOS (MikroTik Switch OS) Administration Guide
SwOS (MikroTik Switch OS) Administration GuideSwOS (MikroTik Switch OS) Administration Guide
SwOS (MikroTik Switch OS) Administration GuideTũi Wichets
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser NetwrokingShuya Osaki
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatJean-Frederic Clere
 
Packet walks in_kubernetes-v4
Packet walks in_kubernetes-v4Packet walks in_kubernetes-v4
Packet walks in_kubernetes-v4InfraEngineer
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchTe-Yen Liu
 
Communicating on the web
Communicating on the webCommunicating on the web
Communicating on the webAdrian Cardenas
 
VPN Overview and IPsec Intro
VPN Overview and IPsec IntroVPN Overview and IPsec Intro
VPN Overview and IPsec IntroNetgate
 

La actualidad más candente (20)

ops300 Week9 feedback
ops300 Week9 feedbackops300 Week9 feedback
ops300 Week9 feedback
 
Auxiliary : Tomcat
Auxiliary : TomcatAuxiliary : Tomcat
Auxiliary : Tomcat
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip Hanik
 
Building Applications on Avalanche
Building Applications on AvalancheBuilding Applications on Avalanche
Building Applications on Avalanche
 
QUIC
QUICQUIC
QUIC
 
Tomcat Clustering
Tomcat ClusteringTomcat Clustering
Tomcat Clustering
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTPAltitude SF 2017: QUIC - A low-latency secure transport for HTTP
Altitude SF 2017: QUIC - A low-latency secure transport for HTTP
 
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2
O'Reilly Fluent Conference: HTTP/1.1 vs. HTTP/2
 
Managing Open vSwitch Across a Large Heterogenous Fleet
Managing Open vSwitch Across a Large Heterogenous FleetManaging Open vSwitch Across a Large Heterogenous Fleet
Managing Open vSwitch Across a Large Heterogenous Fleet
 
SwOS (MikroTik Switch OS) Administration Guide
SwOS (MikroTik Switch OS) Administration GuideSwOS (MikroTik Switch OS) Administration Guide
SwOS (MikroTik Switch OS) Administration Guide
 
Tested configuration for different Primavera versions
Tested configuration for different Primavera versionsTested configuration for different Primavera versions
Tested configuration for different Primavera versions
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser Netwroking
 
Http/2 lightning
Http/2   lightningHttp/2   lightning
Http/2 lightning
 
Apache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and TomcatApache httpd reverse proxy and Tomcat
Apache httpd reverse proxy and Tomcat
 
Packet walks in_kubernetes-v4
Packet walks in_kubernetes-v4Packet walks in_kubernetes-v4
Packet walks in_kubernetes-v4
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
Communicating on the web
Communicating on the webCommunicating on the web
Communicating on the web
 
VPN Overview and IPsec Intro
VPN Overview and IPsec IntroVPN Overview and IPsec Intro
VPN Overview and IPsec Intro
 

Destacado

Having fun with Raspberry and Apache projects
Having fun with Raspberry and Apache projectsHaving fun with Raspberry and Apache projects
Having fun with Raspberry and Apache projectsJean-Frederic Clere
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New EvolutionAllan Huang
 
Tomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance TuningTomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance Tuninglovingprince58
 
Trouble shoot with linux syslog
Trouble shoot with linux syslogTrouble shoot with linux syslog
Trouble shoot with linux syslogashok191
 
UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1Nihar Ranjan Paital
 
Linux Shell Scripting Craftsmanship
Linux Shell Scripting CraftsmanshipLinux Shell Scripting Craftsmanship
Linux Shell Scripting Craftsmanshipbokonen
 
UNIX - Class5 - Advance Shell Scripting-P2
UNIX - Class5 - Advance Shell Scripting-P2UNIX - Class5 - Advance Shell Scripting-P2
UNIX - Class5 - Advance Shell Scripting-P2Nihar Ranjan Paital
 
Karkha unix shell scritping
Karkha unix shell scritpingKarkha unix shell scritping
Karkha unix shell scritpingchockit88
 
Module 13 - Troubleshooting
Module 13 - TroubleshootingModule 13 - Troubleshooting
Module 13 - TroubleshootingT. J. Saotome
 
Advanced Oracle Troubleshooting
Advanced Oracle TroubleshootingAdvanced Oracle Troubleshooting
Advanced Oracle TroubleshootingHector Martinez
 
Linux troubleshooting tips
Linux troubleshooting tipsLinux troubleshooting tips
Linux troubleshooting tipsBert Van Vreckem
 
unix training | unix training videos | unix course unix online training
unix training |  unix training videos |  unix course  unix online training unix training |  unix training videos |  unix course  unix online training
unix training | unix training videos | unix course unix online training Nancy Thomas
 
Process monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingProcess monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingDan Morrill
 
25 Apache Performance Tips
25 Apache Performance Tips25 Apache Performance Tips
25 Apache Performance TipsMonitis_Inc
 
Fusion Middleware 11g How To Part 2
Fusion Middleware 11g How To Part 2Fusion Middleware 11g How To Part 2
Fusion Middleware 11g How To Part 2Dirk Nachbar
 
Sql server troubleshooting
Sql server troubleshootingSql server troubleshooting
Sql server troubleshootingNathan Winters
 

Destacado (20)

Having fun with Raspberry and Apache projects
Having fun with Raspberry and Apache projectsHaving fun with Raspberry and Apache projects
Having fun with Raspberry and Apache projects
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
 
Tomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance TuningTomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance Tuning
 
Trouble shoot with linux syslog
Trouble shoot with linux syslogTrouble shoot with linux syslog
Trouble shoot with linux syslog
 
Unixshellscript 100406085942-phpapp02
Unixshellscript 100406085942-phpapp02Unixshellscript 100406085942-phpapp02
Unixshellscript 100406085942-phpapp02
 
UNIX - Class1 - Basic Shell
UNIX - Class1 - Basic ShellUNIX - Class1 - Basic Shell
UNIX - Class1 - Basic Shell
 
UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1UNIX - Class4 - Advance Shell Scripting-P1
UNIX - Class4 - Advance Shell Scripting-P1
 
Linux Shell Scripting Craftsmanship
Linux Shell Scripting CraftsmanshipLinux Shell Scripting Craftsmanship
Linux Shell Scripting Craftsmanship
 
UNIX - Class5 - Advance Shell Scripting-P2
UNIX - Class5 - Advance Shell Scripting-P2UNIX - Class5 - Advance Shell Scripting-P2
UNIX - Class5 - Advance Shell Scripting-P2
 
Karkha unix shell scritping
Karkha unix shell scritpingKarkha unix shell scritping
Karkha unix shell scritping
 
Module 13 - Troubleshooting
Module 13 - TroubleshootingModule 13 - Troubleshooting
Module 13 - Troubleshooting
 
APACHE
APACHEAPACHE
APACHE
 
Advanced Oracle Troubleshooting
Advanced Oracle TroubleshootingAdvanced Oracle Troubleshooting
Advanced Oracle Troubleshooting
 
Linux troubleshooting tips
Linux troubleshooting tipsLinux troubleshooting tips
Linux troubleshooting tips
 
unix training | unix training videos | unix course unix online training
unix training |  unix training videos |  unix course  unix online training unix training |  unix training videos |  unix course  unix online training
unix training | unix training videos | unix course unix online training
 
Process monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingProcess monitoring in UNIX shell scripting
Process monitoring in UNIX shell scripting
 
25 Apache Performance Tips
25 Apache Performance Tips25 Apache Performance Tips
25 Apache Performance Tips
 
Fusion Middleware 11g How To Part 2
Fusion Middleware 11g How To Part 2Fusion Middleware 11g How To Part 2
Fusion Middleware 11g How To Part 2
 
Sql server troubleshooting
Sql server troubleshootingSql server troubleshooting
Sql server troubleshooting
 
Tomcat
TomcatTomcat
Tomcat
 

Similar a Apache Tomcat NEXT Progress Report Highlights HTTP/2 and SNI Support

03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdfJean-Frederic Clere
 
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our ServersHTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our ServersJean-Frederic Clere
 
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel Zikmund
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel ZikmundWUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel Zikmund
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel ZikmundKarel Zikmund
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)Ericom Software
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceSamsung Open Source Group
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2Thomas Segismont
 
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP ServletsMobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servletstelestax
 
SDN/OpenFlow #lspe
SDN/OpenFlow #lspeSDN/OpenFlow #lspe
SDN/OpenFlow #lspeChris Westin
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsNaresh Chintalcheru
 
TLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingTLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingPatrick Meenan
 
Socket programming, and openresty
Socket programming, and openrestySocket programming, and openresty
Socket programming, and openrestyTavish Naruka
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
Linux Kernel vs DPDK: HTTP Performance Showdown
Linux Kernel vs DPDK: HTTP Performance ShowdownLinux Kernel vs DPDK: HTTP Performance Showdown
Linux Kernel vs DPDK: HTTP Performance ShowdownScyllaDB
 
.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7Karel Zikmund
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd trainingFranck SIMON
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and CaliforniumJulien Vermillard
 
Run Run Trema Test
Run Run Trema TestRun Run Trema Test
Run Run Trema TestHiroshi Ota
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...NGINX, Inc.
 

Similar a Apache Tomcat NEXT Progress Report Highlights HTTP/2 and SNI Support (20)

03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
03_clere-HTTP2 HTTP3 the State of the Art in Our Servers.pdf
 
Monkey Server
Monkey ServerMonkey Server
Monkey Server
 
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our ServersHTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers
HTTP/2, HTTP/3 and SSL/TLS State of the Art in Our Servers
 
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel Zikmund
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel ZikmundWUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel Zikmund
WUG Days 2022 Brno - Networking in .NET 7.0 and YARP -- Karel Zikmund
 
netty_qcon_v4
netty_qcon_v4netty_qcon_v4
netty_qcon_v4
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
Better performances with HTTP/2
Better performances with HTTP/2Better performances with HTTP/2
Better performances with HTTP/2
 
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP ServletsMobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
 
SDN/OpenFlow #lspe
SDN/OpenFlow #lspeSDN/OpenFlow #lspe
SDN/OpenFlow #lspe
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using Websockets
 
TLS - 2016 Velocity Training
TLS - 2016 Velocity TrainingTLS - 2016 Velocity Training
TLS - 2016 Velocity Training
 
Socket programming, and openresty
Socket programming, and openrestySocket programming, and openresty
Socket programming, and openresty
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
Linux Kernel vs DPDK: HTTP Performance Showdown
Linux Kernel vs DPDK: HTTP Performance ShowdownLinux Kernel vs DPDK: HTTP Performance Showdown
Linux Kernel vs DPDK: HTTP Performance Showdown
 
.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7.NET Conf 2022 - Networking in .NET 7
.NET Conf 2022 - Networking in .NET 7
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd training
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
Run Run Trema Test
Run Run Trema TestRun Run Trema Test
Run Run Trema Test
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
 

Más de Jean-Frederic Clere

03_clere_Proxing to tomcat with httpd.pdf
03_clere_Proxing to tomcat with httpd.pdf03_clere_Proxing to tomcat with httpd.pdf
03_clere_Proxing to tomcat with httpd.pdfJean-Frederic Clere
 
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...Jean-Frederic Clere
 
Apache httpd and TLS/SSL certificates validation
Apache httpd and TLS/SSL certificates validationApache httpd and TLS/SSL certificates validation
Apache httpd and TLS/SSL certificates validationJean-Frederic Clere
 
TomcatCon: from a cluster to the cloud
TomcatCon: from a cluster to the cloudTomcatCon: from a cluster to the cloud
TomcatCon: from a cluster to the cloudJean-Frederic Clere
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Jean-Frederic Clere
 
Having fun with Raspberry(s) and Apache projects
Having fun with Raspberry(s) and Apache projectsHaving fun with Raspberry(s) and Apache projects
Having fun with Raspberry(s) and Apache projectsJean-Frederic Clere
 

Más de Jean-Frederic Clere (11)

Panama.pdf
Panama.pdfPanama.pdf
Panama.pdf
 
03_clere_Proxing to tomcat with httpd.pdf
03_clere_Proxing to tomcat with httpd.pdf03_clere_Proxing to tomcat with httpd.pdf
03_clere_Proxing to tomcat with httpd.pdf
 
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
01_clere_Having fun with a solar panel, camera and raspberry. How with a few ...
 
Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64
 
From a cluster to the Cloud
From a cluster to the CloudFrom a cluster to the Cloud
From a cluster to the Cloud
 
Apache httpd and TLS/SSL certificates validation
Apache httpd and TLS/SSL certificates validationApache httpd and TLS/SSL certificates validation
Apache httpd and TLS/SSL certificates validation
 
Juggva cloud
Juggva cloudJuggva cloud
Juggva cloud
 
TomcatCon: from a cluster to the cloud
TomcatCon: from a cluster to the cloudTomcatCon: from a cluster to the cloud
TomcatCon: from a cluster to the cloud
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3
 
Having fun with Raspberry(s) and Apache projects
Having fun with Raspberry(s) and Apache projectsHaving fun with Raspberry(s) and Apache projects
Having fun with Raspberry(s) and Apache projects
 
Native 1.2.8
Native 1.2.8Native 1.2.8
Native 1.2.8
 

Último

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Último (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

Apache Tomcat NEXT Progress Report Highlights HTTP/2 and SNI Support

  • 1. Apache Tomcat NEXT Progress Report Jean-Frederic Clere, Manager, Red Hat
  • 2. 2 AGENDA • Who I am • New features from specifications • Tomcat specific new features • Tomcat features removed • Internal changes • Why Apache Tomcat 8.5? • HTTP/2 and ALPN • SNI • OpenSSLImplementation • Migration from 8.0 to 8.5 • Get involved • Questions
  • 3. 3 Who 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)
  • 5. 5 Tomcat versions Tomcat Java EE Minimum Java SE Servlet JSP EL WebSocket JASPIC 1st Stable Release EOL 5.x 4 1.4 2.4 2.0 N/A N/A N/A 08 2004 09 2012 6.x 5 5 2.5 2.1 2.1 N/A N/A 02 2007 12 2016 7.x 6 6 3.0 2.2 2.2 1.1 N/A 01 2011 TBD 8.0.x 7 7 3.1 2.3 3.0 1.1 N/A 02 2014 xx 2016? 8.5.x 7 7 3.1 2.3 3.0 1.1 1.1 06 2016 TBD 9.x 8 8 4.0 2.4? 3.1? 2.0? 1.1? 2017 TBD xx: was 09 in June ;-) 8.0.38 released 11 October
  • 6. 6 New features from specifications JavaEE 8 ● Key elements ● HTTP/2 ● Simplification ● Better integration for managed beans ● Better infrastructure for the cloud
  • 7. 7 Specifications Servlet 4.0 ● HTTP/2 ● Usability improvements ● HttpFilter, default methods ● Clarifications ● Enhancement requests
  • 8. 8 Specifications HTTP/2 ● HTTP/2 requires some TLS features ● Server Name Indication (SNI) ● Application Layer Protocol Negotiation (ALPN) ● Full support ● 8.5.3 considered stable. (since June 2016) ● h2c available (for proxies) ● h2 requires APR/native/OpenSSL due to ALPN requirements ● Server push available
  • 9. 9 Specifications Servlet 4.0 HTTP/2 ● Java EE 8 must run on Java 8 ● Java EE 8 requires Servlet 4.0 ● Servlet 4.0 requires HTTP/2 ● HTTP/2 requires ALPN ● Java 8 does not support ALPN ● ALPN support will be available in Java 9 ● ALPN support will likely be backported to Java 8 at some point...
  • 10. 10 Specifications Other ● WebSocket 1.2 (keep 1.1?) ● Standard extension for compression/multiplexing? ● JSP 2.4 (keep 2.3?) ● Imports to clarify (EL 3.0 related) ● EL 3.1 (keep 3.0?) ● Only minor improvements/clarifications needed ● JASPIC 1.1 (New!) ● Java Authentication Service Provider Interface for Containers. Used to support Oauth (login)
  • 11. 11 Tomcat New Features TLS support improvements (1) ● Major rewrite of TLS support ● Tomcat 8 supports ● one TLS virtual host per connector ● one certificate per virtual host ● Tomcat 9 supports ● multiple virtual hosts per connector (SNI) ● multiple certificates per virtual host ● TLS configuration has changed to support this
  • 12. 12 Tomcat New Features TLS support improvements (2) ● SNI and multiple certificates supported by all connectors ● APR/native support via the OpenSSL API ● JSSE support via parsing the initial handshake ● ALPN supported by APR/native or OpenSSLImplementation ● JSSE support is currently TBD ● Common (where possible) configuration for all connectors ● Some JSSE / OpenSSL differences remain. ● OpenSSL engine option of NIO and NIO2 connectors • Allows OpenSSL performance with NIO/NIO2 APIs • Use automatically when tc-native is installed.
  • 13. 13 Tomcat Removed Features Old blocking O/I connectors... ● BIO HTTP and BIO AJP connectors ● Websocket and Servlet 3.1 require non-blocking IO ● Emulation of non-blocking is bad: • Complex • Not scalable • Risky: stuff that might break. • Decision remove them. • Still 3 connectors: • NIO default connector • NIO2 introduced in Tomcat 8.0 • APR/Native still available. (requires tomcat-native libraries)
  • 14. 14 Tomcat Removed Features Comet ● Proprietary interface for asynchronous I/O ● Users are moving (have moved) to WebSocket ● Adds complexity to all the connectors ● Therefore decided to remove it
  • 15. 15 Internal Changes Connectors ● Removed ● BIO ● Comet ● Reduce duplication ● HTTP upgrade from 12 classes to 3 ● HTTP/1.1 cleanup = removed ~ 50% (~2500 loc) ● AJP 1.3 cleanup = remove ~ 30% ● No connector specific HTTP/2 code ● Implementation specific per connector → Endpoint ● Implementation specific per connection → SocketWrapper
  • 16. 16 Internal Changes Websocket ● Refactored I/O implementation ● Direct to Tomcat’s I/O layer ● Not via Servlet 3.1 non-blocking API ● Simpler ● Faster ● Extension support likely to require further refactoring?
  • 17. 17 Internal Changes Other ● Remove use of system properties for configuration ● Move to per Context / Host / Server / Connector ● keep the system property as a default ● Made RFC 6265 CookieProcessor the default ● Note UTF-8 extension
  • 18. 18 Why Tomcat 8.5? EE8 late... ● Tomcat 9 stable release is tied to the release of Java EE 8 ● Java EE 8 has been repeatedly delayed ● Currently delayed until at least H1 2017 ● Don't want users to have to wait another year+ to get access our new features: ● HTTP/2 ● OpenSSL encryption for JSSE ● TLS virtual hosting ● JASPIC ● Hence, Tomcat 8.5...
  • 19. 19 What is Tomcat 8.5? Tomcat 9.0.0.M4... ● Started from Apache Tomcat 9.0.0M4 ● Reverted all Servlet 4.0 API changes ● Reworked code that required Java 8 ● Tomcat specific Push Server API ● Configuration compatible with 8.0.x ● “big” removal: ● Comet (migrate to WebSocket) ● BIO (Connector… probably not noticed)
  • 20. 20 Tomcat 8.5 timing Possible roadmap ● ~6 months of 8.0.x and 8.5.x ● Extended if needed. ● ~ one month between releases ● ~ after no more 8.0.x releases ● First 8.5 release 24 March 2016 ● Current release: 8.5.6 stable ● Expect last 8.0.x soon: no date yet!
  • 21. 21 Why HTTP/2 – HTTP/1.1: June 1999 (RFC 2616) ● 1999: – 1 page ~ 1kB HTML ● 2015: – 1 page ~ 3MB HTML + IMAGES + JS + CSS etc – Protocol: ● Not adapted / inefficient / etc
  • 22. 22 HTTP/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)
  • 23. 23 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
  • 24. 24 HTTP/2 MultiplexedHTTP/2 Multiplexed Headers Data Headers Headers Headers Data Data Headers Data Data HeadersData Headers
  • 25. 25 HTTP/2 : more • HTTP headers compression • ~ 80 % saved • Request priority • Both sides • Server Push • Prevents round trips to get page elements. • Faster / better rendering on browsers.
  • 26. 26 HTTP/2 When 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: • More than 50% is over HTTP/2 (data from April) • → go for it now!
  • 27. 27 ALPN Client Hello (Firefox)
  • 29. 29 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> <Connector port="8004" protocol="org.apache.coyote.http11.Http11AprProtocol"> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> </Connector>
  • 30. 30 Tomcat / 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.
  • 31. 31 Tomcat / Performances 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
  • 32. 32 Tomcat / Performances 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
  • 33. 33 Tomcat / Demo • No server push (may be change it: SimpleImagePush) • Multiplexing • headers compression • Page html page: • That requires a lot (~1000) of (~4Kbytes) images to render.
  • 34. 34 SNI Client Hello (Firefox)
  • 35. 35 TC connector server.xmlTC connector server.xml <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true" maxThreads="150" secure="true" scheme="https" defaultSSLHostConfigName="local1.com" port="8443" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig honorCipherOrder="false" hostName="local1.com" > <Certificate certificateKeyFile="conf/local1.key" certificateFile="conf/local1.crt" type="RSA" /> </SSLHostConfig> <SSLHostConfig honorCipherOrder="false" hostName="local2.com"> <Certificate certificateKeyFile="conf/local2.key" certificateFile="conf/local2.crt" type="RSA" /> </SSLHostConfig> </Connector>
  • 36. 36 Tomcat / Demo • 2 pairs of key/certificate • local1.com • local2.com • /etc/hosts • 127.0.0.1 localhost local1.com local2.com • SNI allows to select the right key/certificate
  • 37. 37 Why a new SSLImplementation • JSSE: • Very slow • Missing features: like ALPN (JEP 244: TLS Application-Layer Protocol Negotiation) • Hardware acceleration used to be very partial (like AES in early java8) • Native connector: • Fast but a lot of native code • Use OpenSSL for SSL/TLS. • New OpenSSL implemetation: • Fast. • Uses only a OpenSSL for native code (no native socket, poller etc). • Works with NIO and NIO2. • Uses OpenSSL for SSL/TLS. (warp, unwarp, handshake etc).
  • 38. 41 TC connector server.xmlTC connector server.xml OLD NATIVE CONNECTOR WAY: <Connector port="8002" scheme="https" SSLEnabled="true" 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/> NEW OPENSSLImplementation WAY: (AprLifecycleListener" with SSLEngine="on" + tcnative libs) <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>
  • 39. 42 Migration from Apache Tomcat 8.0.x ● Aiming to make it a seamless process for most users ● Some users will have some work to do ● Configuration files can be re-used ● Will need migration to use new TLS features ● Some removed features will not be replaced ● Comet (Stick with final 8.0, revert 7.0 or migrate WebSocket) ● Work arounds may be added for some removed features ● BIO ● Removed deprecated code may be restored ● Manager, Context, RealmBase
  • 40. 43 GET INVOLVED Help is welcomed ;-) • SVN: • http://svn.apache.org/repos/asf/tomcat/tc8.5.x/trunk/ • http://svn.apache.org/repos/asf/tomcat/trunk/ • MAIL LISTS: • dev@tomcat.apache.org Dev list. • users@tomcat.apache.org Users list. • WIKI: • http://wiki.apache.org/tomcat/FrontPage