[web-devel] Implementing SPDY

Gregory Collins greg at gregorycollins.net
Tue Jan 10 20:41:08 CET 2012


On Mon, Jan 9, 2012 at 9:07 PM, Robin Brandt <robin.brandt at gmail.com> wrote:

> Hello there,
>
> I'm currently looking into implementing the SPDY [1] protocol based on
> Warp. I read in the archives that Daniel Sommermann wanted to start
> something similar for snap-server but I haven't seen any updates for
> some time. So if you've got a finished implementation somewhere in
> your drawer this would be a great time to publish it ;)
>

I briefly looked into implementing SPDY for Snap a while ago (i.e. I read
all the relevant papers and gave up). I came to the conclusion that given
my TODO list, the amount of effort required made the problem infeasible. I
would be really excited to see a SPDY implementation for any of the Haskell
web frameworks, because the hard problems to solve in a SPDY implementation
are not specific to any specific web implementation.

The biggest hurdle re: implementing SPDY is the TLS bits. The protocol is
documented (sort of), but all the magic numbers are listed as "TBD" in the
spec. I spent a good two hours trying to pick my way through the chromium
fork of OpenSSL (if you have preexisting expertise or lots of time and a
hard hat, good luck with that) before giving up and asking for help
internally at Google. It's been a while now, so the details are a little
fuzzy, but the numbers are all TBD because IANA/IETF/whoever wants them to
stay that way until the spec is finalized, and no, there aren't really any
other docs about implementing this protocol other than the proposed specs
and the source code. And oh yeah, this is in crypto code, so if you touch
the wrong thing the wrong way, you've exposed yourself to side-channel
attacks, or worse.

Between next protocol negotiation, TLS false start, TLS snap start, and the
SPDY multiplexing code itself (by far the easiest problem to overcome: it's
straightforward and non-archaeological), I concluded that implementing all
of this crap might take me a month or two if I were doing it full time at
my day job. As a "hobby-time" project? For me, intractable right now. It
would be a really fun and interesting project for someone with the time
though.

G
-- 
Gregory Collins <greg at gregorycollins.net>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/web-devel/attachments/20120110/a09c8077/attachment.htm>


More information about the web-devel mailing list