From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-x233.google.com (mail-oi0-x233.google.com [IPv6:2607:f8b0:4003:c06::233]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 98B1F21F373 for ; Thu, 19 Mar 2015 17:10:16 -0700 (PDT) Received: by oiag65 with SMTP id g65so78956060oia.2 for ; Thu, 19 Mar 2015 17:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=BK/n1pT1lpjQCvS/X1iz/sBmfIZphEZ3m5GlggIGmN8=; b=FCF9ufdFqo0BAIYxTW8NMGO5f0bfgsj3bfuMggBATYRKP+upwJz2B4Orjb6hXiuBh1 UC+CjHlzp34RQRHYe/XO/zxp0SPs0apmfNBZLsaKAOUzry86fjE5snfa81rgcIbsvjiK ZUQ7I3ApJVj0Sol6G77OL/za8zV7LrSWOU08rspboyC0snRyHUFbmOMNwLCP6iY6lF/t FswioSdzg4j7PRsIpjozzZIkO+O2nQ1zxaEJNxpKNhSHOcE//iZcJEa3gHpOOxwsChdc q0z/ocwiH/ZHnInW1Som33dZJvet6go2b29kyniu02jUPSIYPjGRgYQm+prEvr6EHQkF 04xg== MIME-Version: 1.0 X-Received: by 10.60.98.2 with SMTP id ee2mr5369141oeb.39.1426810215360; Thu, 19 Mar 2015 17:10:15 -0700 (PDT) Received: by 10.202.51.66 with HTTP; Thu, 19 Mar 2015 17:10:15 -0700 (PDT) In-Reply-To: References: Date: Thu, 19 Mar 2015 17:10:15 -0700 Message-ID: From: Dave Taht To: bloat Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Bloat] Fwd: [proto-quic] QUIC library "libquic" and Go binding X-BeenThere: bloat@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: General list for discussing Bufferbloat List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Mar 2015 00:10:44 -0000 happy. Now we can benchmark quic in netperf-wrapper. ---------- Forwarded message ---------- From: Brian Hong Date: Mon, Mar 16, 2015 at 12:34 AM Subject: [proto-quic] QUIC library "libquic" and Go binding To: proto-quic@chromium.org Hello QUIC team, Me and my colleague have been working on creating a working QUIC Go binding= . Since QUIC is a transport layer, we have also tried to create a socket-like= APIs along with HTTP QUIC server/client support. # libquic In order to do this work, we needed to seperate QUIC code from Chromium codebase. The result: https://github.com/devsisters/libquic It is a minimally patched QUIC code extracted from Chromium codebase. >From the library programmers perspective, QUIC code has many unneeded/unuse= d dependencies. Manually looking for the unneeded dependencies are very tedio= us. We have managed to do this anyway and created simple scripts to make syncin= g from the upstream Chromium codebase easy as possible. There have been many patches to utilitity classes and functions. Most of th= em are `#if 0` macro patches. They remove unused functions from QUIC. Some pat= ches actually replace existing functions to remove third-party library dependenc= ies. All the needed patches are in the repository directory: [patch](https://github.com/devsisters/libquic/tree/master/patch) We replaced two components. Class `base::debug::BreakDebugger` and utility component `url/base/net_util.cc`. The replaced `BreakDebugger` does absolut= ely nothing. Replaced `net_util.cc` file removes dependencies to `url/url_parse= .h` which requires Mozilla URL parsing library. Since the functions required by= QUIC were simple, We have reimplemented needed functions with no external depend= ency. All the replaced components are in the directory: [custom](https://github.com/devsisters/libquic/blob/master/custom/) The result is that the only required dependency is BoringSSL. We have not b= een able to replace this with OpenSSL since the functions used by QUIC only exi= st in BoringSSL. # goquic/gospdyquic This is a work-in-progress QUIC implementation for Go. And is in a *highly experimental* status. There is some problems when the library is under high concurrency. We plan to debug this problem, and when we feel certain that t= he problem might be from the underlying upstream codebase, we plan to issue it= here too. The link to the project: https://github.com/devsisters/goquic There is also gospdyquic: https://github.com/devsisters/gospdyquic This adds QUIC support to existing Go HTTP server framework. The basic gist= is that you can create QUIC client and servers very easily. See the examples: * https://github.com/devsisters/gospdyquic/blob/master/example/client.go * https://github.com/devsisters/gospdyquic/blob/master/example/server.go * https://github.com/devsisters/gospdyquic/blob/master/example/reverse_pr= oxy.go # quicbench Using gospdyquic, we modified existing `gobench` program to benchmark QUIC servers: https://github.com/devsisters/quicbench # Preliminary benchmark results Here are some preliminary benchmark results. Details are in the `goquic` si= te. | Payload Size | Requests per Second | | ------------ | ------------------: | | 30 B | 23832.18 | | 1 kB | 21704.84 | | 5 kB | 9343.58 | | 10 kB | 5312.75 | On 10kB case, calculating the total network throughput is `435Mbps`. Connection performance results are `2905.58 CPS`. Details: https://github.com/devsisters/goquic#preliminary-benchmarks # Conclusion We hope that our work would help QUIC ecosystem prosper. We've also license= d our code with same 3-clause BSD license from Chromium. We don't intent to f= ork from Chromium project. The code will be frequently synced from upstream. Th= e syncing process itself is also designed to be effortless as possible. (see: https://github.com/devsisters/libquic#syncing-from-upstream ) Also, one more thing. :) If Chromium team would somehow 'bless' our project= , it would be very great. Let's find ways to collaborate. Thank you for reading this. Contact me for any questions regarding this pro= ject. Best regards, Sung-jin Brian Hong -- Sung-jin (Brian) Hong Senior Technical Lead Devsisters Corp. +82-2-544-2950 (Work) +82-2-544-3625 (Fax) +82-10-6247-8846 (Mobile) CONFIDENTIALITY. This communication is intended only for the use of the intended recipient(s) and may contain information that is privileged and confidential. If you are not the intended recipient, please note that any dissemination of this communication is prohibited. If you have received this communication in error, please erase all copies of the message, including all attachments, and please also notify the sender immediately. Thank you for your cooperation. -- You received this message because you are subscribed to the Google Groups "QUIC Prototype Protocol Discussion group" group. To unsubscribe from this group and stop receiving emails from it, send an email to proto-quic+unsubscribe@chromium.org. To post to this group, send email to proto-quic@chromium.org. For more options, visit https://groups.google.com/a/chromium.org/d/optout. --=20 Dave T=C3=A4ht Let's make wifi fast, less jittery and reliable again! https://plus.google.com/u/0/107942175615993706558/posts/TVX3o84jjmb