SPDY: what is the purpose of blocked frame

Yury Kirpichev ykirpichev at gmail.com
Wed Jul 10 13:57:57 UTC 2013


Hi,

We have found one issue with proposed solution. The issue is that now
SETTINGS frame will be send after SYN_REPLY frame. Though, it does not
violate SPDYv2 protocol, it can be easily fixed by changing:
@@ -1662,7 +1662,7 @@
ngx_http_spdy_send_settings(ngx_http_spdy_connection_t *sc)

     buf->last = p;

-    ngx_http_spdy_queue_frame(sc, frame);
+    ngx_http_spdy_queue_blocked_frame(sc, frame);

     return NGX_OK;
 }

BR/ Yury


2013/7/6 Yury Kirpichev <ykirpichev at gmail.com>

> Yes, we did such modification in our test environment and it is working
> well so far.
> Moreover, it showed good results in case of intermixed requests with low
> and high priority are handled.
>
> BR/ Yury
>
>
> 2013/7/5 Valentin V. Bartenev <vbart at nginx.com>
>
> On Wednesday 26 June 2013 12:34:17 Yury Kirpichev wrote:
>> > Hello,
>> >
>> > Thanks for analysis and explanation.
>> > Then how about the following workaround -
>> > - queue blocked frames at the begining of queue in FIFO order.
>> > (just remove from ngx_http_spdy_queue_blocked_frame the code:
>> >  if (frame->priority >= (*out)->priority) {
>> >             break;
>> >         }
>> > )
>> >
>> > - queue non-blocked frames after blocked in priority order:
>> > static ngx_inline void
>> > ngx_http_spdy_queue_frame(ngx_http_spdy_connection_t *sc,
>> >     ngx_http_spdy_out_frame_t *frame)
>> > {
>> >     ngx_http_spdy_out_frame_t  **out;
>> >
>> >     for (out = &sc->last_out; *out *&& !(*out)->blocked*; out =
>> > &(*out)->next)
>> >     {
>> >         if (frame->priority >= (*out)->priority) {
>> >             break;
>> >         }
>> >     }
>> >
>> >     frame->next = *out;
>> >     *out = frame;
>> > }
>> >
>> > Do you foresee any obvious drawback of such approach?
>> >
>> [..]
>>
>> At first glance I don't.  Indeed it can be a better strategy, particularly
>> since the SYN_STREAM frames are usually small.
>>
>> Have you tested it already?
>>
>>   wbr, Valentin V. Bartenev
>>
>> _______________________________________________
>> nginx-devel mailing list
>> nginx-devel at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20130710/1ef3a1b3/attachment.html>


More information about the nginx-devel mailing list