[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14340037#comment-14340037 ] Neil Craig edited comment on TS-2729 at 2/27/15 11:40 AM: -- Hi guys Firstly, apologies if this is the wrong place to ask. I have ATS 5.3, compiled (with experimental plugins) from a github pull a couple of days ago, runnning on CentOS 6.6. I'm trying to get ATS working with h2 as a reverse proxy but every time I enable h2 via proxy.config.http2.enabled, proxying breaks. I've tried both http and https backends and many variants of http_ports config. H2 is working in that the chrome/firefox indicator shows it and i can see it in chrome:net-internals but as i say, proxying breaks. The moment i disable h2 via proxy.config.http2.enabled INT 0, proxying works again (as does vanilla TLS). I can't see anything in the logs which is helpful. Any advice or a pointer to a better place to ask would be very gratefully received. Cheers Neil was (Author: neil.craig): Hi guys Firstly, apologies if this is the wrong place to ask. I have ATS 5.3, compiled from a github pull a couple of days ago, runnning on CentOS 6.6. I'm trying to get ATS working with h2 as a reverse proxy but every time I enable h2 via proxy.config.http2.enabled, proxying breaks. I've tried both http and https backends and many variants of http_ports config. H2 is working in that the chrome/firefox indicator shows it and i can see it in chrome:net-internals but as i say, proxying breaks. The moment i disable h2 via proxy.config.http2.enabled INT 0, proxying works again (as does vanilla TLS). I can't see anything in the logs which is helpful. Any advice or a pointer to a better place to ask would be very gratefully received. Cheers Neil > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: Bryan Call > Labels: review > Fix For: 5.3.0 > > Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, > 0005-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, > improve-mime.patch > > > h2. Overview > Support HTTP/2 as a client side L7 protocol. This feature is implemented into > ATS core. > Now, it supports the latest HTTP/2 draft version, h2-16. > https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 > h2. How to test > # Build ATS codes normally. you need neither any build option nor external > HTTP/2 library. > # Configure settings to use https. > # Add settings to records.config to use http2. > {noformat} > CONFIG proxy.config.http2.enabled INT 1 > {noformat} > # Access to ATS by HTTP/2 client. > h2. Descriptions of current attached patches. > * 0003-h2-prototype.patch > ** For experiment. Please don't merge it. It enables to interpret HTTP/2 > requests and respond for it. But now this code is unsafe and dirty. More > refactoring is required. > h2. DONE > * Fundamental HTTP/2 frame handling > * Flow control > * Some error handlings > h2. TODO > * Refactoring > * More debugging > * Write documents > * Add test tools for HPACK, HTTP/2 frames > h2. No plan > * [Server > Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] > This would probably require support for [Link > preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? > * [Stream > Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] > * [Alternative > Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14319099#comment-14319099 ] Bryan Call edited comment on TS-2729 at 2/12/15 10:30 PM: -- Just to verity, I only have to apply the patches 000[345] and improve-mime.patch in order correct? {code} patch -p1 < 0003-h2-prototype.patch patch -p1 < 0004-h2-prototype.patch patch -p1 < 0005-h2-prototype.patch patch -p1 < improve-mime.patch {code} was (Author: bcall): Just to verity, I only have to apply the patches 000[345] in order correct? {code} patch -p1 < 0003-h2-prototype.patch patch -p1 < 0004-h2-prototype.patch patch -p1 < 0005-h2-prototype.patch {code} > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: James Peach > Labels: review > Fix For: 5.3.0 > > Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, > 0005-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, > improve-mime.patch > > > h2. Overview > Support HTTP/2 as a client side L7 protocol. This feature is implemented into > ATS core. > Now, it supports the latest HTTP/2 draft version, h2-16. > https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 > h2. How to test > # Build ATS codes normally. you need neither any build option nor external > HTTP/2 library. > # Configure settings to use https. > # Add settings to records.config to use http2. > {noformat} > CONFIG proxy.config.http2.enabled INT 1 > {noformat} > # Access to ATS by HTTP/2 client. > h2. Descriptions of current attached patches. > * 0003-h2-prototype.patch > ** For experiment. Please don't merge it. It enables to interpret HTTP/2 > requests and respond for it. But now this code is unsafe and dirty. More > refactoring is required. > h2. DONE > * Fundamental HTTP/2 frame handling > * Flow control > * Some error handlings > h2. TODO > * Refactoring > * More debugging > * Write documents > * Add test tools for HPACK, HTTP/2 frames > h2. No plan > * [Server > Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] > This would probably require support for [Link > preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? > * [Stream > Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] > * [Alternative > Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14312982#comment-14312982 ] Leif Hedstrom edited comment on TS-2729 at 2/9/15 10:07 PM: Fwiw, I'm leaving https://docs.trafficserver.apache.org with the H2 patchset enabled, it seems solid so far. Great work guys, very, very exciting! was (Author: zwoop): Fwiw, I'm leaving https://docs.trafficserver.apache.org with the H2 patchset enabled, it seems solid so far. > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: James Peach > Labels: review > Fix For: 6.0.0 > > Attachments: 0003-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, > http2-0004.patch > > > h2. Overview > Support HTTP/2 as a client side L7 protocol. This feature is implemented into > ATS core. > Now, it supports the latest HTTP/2 draft version, h2-16. > https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 > h2. How to test > # Build ATS codes normally. you need neither any build option nor external > HTTP/2 library. > # Configure settings to use https. > # Add settings to records.config to use http2. > {noformat} > CONFIG proxy.config.http2.enabled INT 1 > {noformat} > # Access to ATS by HTTP/2 client. > h2. Descriptions of current attached patches. > * 0003-h2-prototype.patch > ** For experiment. Please don't merge it. It enables to interpret HTTP/2 > requests and respond for it. But now this code is unsafe and dirty. More > refactoring is required. > h2. DONE > * Fundamental HTTP/2 frame handling > * Flow control > * Some error handlings > h2. TODO > * Refactoring > * More debugging > * Write documents > * Add test tools for HPACK, HTTP/2 frames > h2. No plan > * [Server > Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] > * [Stream > Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] > * [Alternative > Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14228071#comment-14228071 ] Ryo Okubo edited comment on TS-2729 at 11/28/14 7:37 AM: - This patch enables to upgrade from HTTP/1 processes to HTTP/2 by using [upgrade mechanism|https://tools.ietf.org/html/draft-ietf-httpbis-http2-15#section-3.2]. We can test it by nghttp2 with _--upgrade_ option. {noformat} $ nghttp --verbose --upgrade http://localhost:8080/ [ 0.006] HTTP Upgrade request GET / HTTP/1.1 Host: localhost:8080 Connection: Upgrade, HTTP2-Settings Upgrade: h2c-14 HTTP2-Settings: AAMAAABkAAQAAP__ Accept: */* User-Agent: nghttp2/0.6.1 [ 0.007] HTTP Upgrade response HTTP/1.1 101 Switching Protocols Date: Fri, 28 Nov 2014 07:31:06 GMT Connection: Upgrade Server: ATS/5.3.0 Upgrade: h2c-14 [ 0.007] HTTP Upgrade success [ 0.007] send SETTINGS frame (niv=2) [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100] [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535] [ 0.008] recv SETTINGS frame (niv=0) [ 0.008] send SETTINGS frame ; ACK (niv=0) [ 0.008] recv SETTINGS frame ; ACK (niv=0) {noformat} Processes after upgrading haven't been implemented yet. was (Author: rokubo): This patch enables to upgrade from HTTP/1 processes to HTTP/2 by using [upgrade mechanism|https://tools.ietf.org/html/draft-ietf-httpbis-http2-15#section-3.2]. > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: James Peach > Labels: review > Fix For: 6.0.0 > > Attachments: add_const.patch, fix_typo.patch, h2-14.patch, > h2_prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch > > > h2. Overview > Support HTTP/2 as a client side L7 protocol. This feature is implemented into > ATS core. > Now, it supports the latest HTTP/2 draft version, h2-14. > https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 > h2. How to test > # Build ATS codes normally. you need neither any build option nor external > HTTP/2 library. > # Configure settings to use https. > # Access to ATS by HTTP/2 client. > h2. Descriptions of current attached patches. > * h2_prototype.patch > ** For experiment. Please don't merge it. It enables to interpret HTTP/2 > requests and respond for it. But now this code is unsafe and dirty. More > refactoring is required. > h2. WIP > * Improve h2_prototype > * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14137625#comment-14137625 ] James Peach edited comment on TS-2729 at 9/17/14 5:59 PM: -- Yeh, I don't like how {{Http2FrameLength}} is implicitly endian-specific. Something like this would be much cleaner: {code} byte_addressable_value length; ink_zero(length); memcpy_and_advance(length.bytes[4], ptr); memcpy_and_advance(length.bytes[3], ptr); memcpy_and_advance(length.bytes[2], ptr); // LSB length.bytes[1] is 0 (network byte order). hdr.length = ntohl(length.value); {code} was (Author: jamespeach): Yeh, I don't like how {{Http2FrameLength}} is implicitly endian-specific. > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: James Peach > Labels: review > Fix For: 6.0.0 > > Attachments: h2-14.patch, hpack_prototype.patch, http2-0004.patch > > > h2. Overview > We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core > experimentally. > Now, it supports HTTP/2 draft-12. > http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 > Our implementation similar to the SPDY implementation in ATS core(TS-2431) > but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. > https://github.com/tatsuhiro-t/nghttp2 > We tested NPN and ALPN negotiation. > h2. How to test it > * Install nghttp2 library, here is URL of this library: > https://github.com/tatsuhiro-t/nghttp2 > * Use '--enable-http2' option to compile ATS: > {noformat} > $ ./configure --enable-http2 > $ make all && make install > {noformat} > * You can use '--with-openssl=' option. > * Need not configure anything if you just want to test HTTP/2 without SSL. > The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of > requests. > * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, > for example: > {noformat} > # HTTP/2 without SSL > $ nghttp -v http://localhost/b.txt > # HTTP/2 + SSL > $ nghttp -v https://localhost/b.txt > {noformat} > h2. TODO > * -Cleanup codes.- > * Follow -http2 draft-12- and later. > * -Support ALPN.- > * Add settings related to HTTP/2 into records.config. > ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14131283#comment-14131283 ] Ryo Okubo edited comment on TS-2729 at 9/12/14 8:48 AM: Current HTTP/2 implementation supports draft-12, but it isn't latest specification. After h2-14.patch is applied, you can use latest draft. was (Author: rokubo): Current HTTP/2 implementation supports draft-12, but it isn't latest specification. After this patch is applied, you can use latest draft. > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: James Peach > Labels: review > Fix For: 6.0.0 > > Attachments: h2-14.patch, http2-0004.patch > > > h2. Overview > We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core > experimentally. > Now, it supports HTTP/2 draft-12. > http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 > Our implementation similar to the SPDY implementation in ATS core(TS-2431) > but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. > https://github.com/tatsuhiro-t/nghttp2 > We tested NPN and ALPN negotiation. > h2. How to test it > * Install nghttp2 library, here is URL of this library: > https://github.com/tatsuhiro-t/nghttp2 > * Use '--enable-http2' option to compile ATS: > {noformat} > $ ./configure --enable-http2 > $ make all && make install > {noformat} > * You can use '--with-openssl=' option. > * Need not configure anything if you just want to test HTTP/2 without SSL. > The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of > requests. > * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, > for example: > {noformat} > # HTTP/2 without SSL > $ nghttp -v http://localhost/b.txt > # HTTP/2 + SSL > $ nghttp -v https://localhost/b.txt > {noformat} > h2. TODO > * -Cleanup codes.- > * Follow -http2 draft-12- and later. > * -Support ALPN.- > * Add settings related to HTTP/2 into records.config. > ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13975506#comment-13975506 ] Masakazu Kitajo edited comment on TS-2729 at 4/21/14 12:40 PM: --- draft11.patch makes the last patch compatible with newer nghttp2 and draft-11 was (Author: maskit): This makes the last patch compatible with newer nghttp2 and draft-11 > Add HTTP/2 support to ATS > - > > Key: TS-2729 > URL: https://issues.apache.org/jira/browse/TS-2729 > Project: Traffic Server > Issue Type: New Feature > Components: HTTP/2 >Reporter: Ryo OKUBO > Labels: review > Fix For: 5.0.0 > > Attachments: draft11.patch, http2-0001.patch > > > h2. Overview > We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core > experimentally. > Now, it supports HTTP/2 draft-10. > http://tools.ietf.org/html/draft-ietf-httpbis-http2-10 > Our implementation similar to the SPDY implementation in ATS core(TS-2431) > but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. > https://github.com/tatsuhiro-t/nghttp2 > We tested NPN and ALPN negotiation. > h2. How to test it > * Install nghttp2 library, here is URL of this library: > https://github.com/tatsuhiro-t/nghttp2 > * Use '--enable-http2' option to compile ATS: > {noformat} > $ ./configure --enable-http2 > $ make all && make install > {noformat} > * You can use '--with-openssl=' option. > * Need not configure anything if you just want to test HTTP/2 without SSL. > The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of > requests. > * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, > for example: > {noformat} > # HTTP/2 without SSL > $ nghttp -v http://localhost/b.txt > # HTTP/2 + SSL > $ nghttp -v https://localhost/b.txt > {noformat} > h2. TODO > * Cleanup codes. > * Follow http2 draft-12 and later. > * -Support ALPN.- > * Add settings related to HTTP/2 into records.config. -- This message was sent by Atlassian JIRA (v6.2#6252)