[ 
https://issues.apache.org/jira/browse/TS-2431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875906#comment-13875906
 ] 

Yunkai Zhang commented on TS-2431:
----------------------------------

1) In fact, this version doesn't have significant improvement on performance 
then plugin, as it denpends on FetchSM which will work with PluginVC. But in 
this version, I have do some optimization for FetchSM, I think the new FetchSM 
will be much more better than the old one, for more detail, you can read the 
commit log or source code of 
"0003-TS-2431-Extends-and-optimizes-FetchSM.V2.patch".

2) Our PluginVC should take both the locks of active_vc and passive_vc, and 
more worse, the active_vc will go on to take the lock of FetchSM, so the lock 
is too heavy for SPDY protocol. Ideally, all HTTP requests within a SPDY 
session should run concurrently, but PluginVC can't archieve this purpose.

3) There is another shortcoming of PluginVC. In FetchSM, it will use PluginVC 
to replace UnixNetVConnection to launch HTTP request. There are some important 
code, such as stats code and throttle of connection in UnixNetVConnection, will 
be missed in PluginVC. I hope we can reuse UnixNetVConnection when we launch 
new HTTP request in SPDY, so that we can keep all HTTP requests are same as the 
normal HTTP request.

That is why I want to implemant SPDY in core, although this version can't solve 
all problems mentioned above, but it will be the first step. More work can 
based on it.



> Add SPDY supporting to ATS
> --------------------------
>
>                 Key: TS-2431
>                 URL: https://issues.apache.org/jira/browse/TS-2431
>             Project: Traffic Server
>          Issue Type: New Feature
>          Components: HTTP
>            Reporter: Yunkai Zhang
>            Assignee: Yunkai Zhang
>             Fix For: 5.0.0
>
>         Attachments: 0001-TS-2431-Preparation-of-SPDY-protocol.V2.patch, 
> 0002-TS-2431-Add-autoconf-options-for-SPDY.V2.patch, 
> 0003-TS-2431-Extends-and-optimizes-FetchSM.V2.patch, 
> 0004-TS-2431-Implement-dechunk-supporting-in-FetchSM.V2.patch, 
> 0005-TS-2431-Migrate-Taobao-SPDY-plugin-to-ATS-core.V2.patch, 
> 0006-TS-2431-Add-SSL-supporting-for-SPDY.V2.patch, 
> 0007-Fix-crypto.m4-when-detect-openssl-library-in-64bit-O.V2.patch
>
>
> I must say, sorry for my late. And now, I have finished the first version, 
> the migration of Taobao SPDY plugin to ATS core.
> But seriously speaking, the migration to ATS core is finished *partially*.  I 
> had tried to remove the dependency of *fetcher* library created by @Quehan 
> and create a specific VC for each http request in spdy sm, but I found it was 
> too difficult, so I give up temporarily.
> Let me push this series patches to here before it's perfect enough, at least, 
> this series can statisfy TAOBAO's current demand (in fact, this version has 
> had good performance in our testing, but it can do much better I think).
> I had thought another solution instread of recreating a new VC for each http 
> request in spdy sm, which will replace FetchSM's function and speed up SPDY 
> protocol, but will not change the framework of this version. So I can hacking 
> it based on these patches in the future.
> == *UPDATE* ==
> - From now on, SPDY can work with SSL, Cheers!
> ==How to test it==
> - Install *spdylay* library, here is URL of this lib:
> Download spdylay library: https://github.com/tatsuhiro-t/spdylay
> -  Use '--enable-spdy' option to compile ATS:
> {code}
> $ ./configure --enable-spdy
> $ make all && make install
> {code}
> - SPDY can work with SSL now, it depends on OpenSSL >= 1.0.1. You can use 
> '--with-openssl=<dir>' option to tell ATS where to search it:
> {code}
> $ ./configure --enable-spdy --with-openssl=/path/to/openssl-1.01
> {code}
> - Need not to config anything if you just want to test SPDY without SSL.
>    The code can recognize SPDY or HTTP by reading this first byte of request.
> - When test SPDY+SSL, you may need to configure SSL key properly for ATS.
> - You can use *spdycat* in spdylay(or other SPDY client) to do request, for 
> example:
> {code}
> # SPDY without SSL
> $ spdycat -3 -v --no-tls http://localhost/b.txt
> # SPDY + SSL
> $  spdycat -3 -v  https://localhost/b.txt
> {code}
> - You can enable debuging logs of SPDY:
> {code}
> CONFIG proxy.config.diags.debug.enabled INT 1
> CONFIG proxy.config.diags.debug.tags STRING spdy
> {code}
> ==TODO===
> - Migrate spdy configuration to ATS records.config
> Any feedbacks are welcome.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to