Please read https://multipath-quic.org/2017/12/09/artifacts-available.html to figure out how to setup the code.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.travis
ackhandler
benchmark added multipath to quic Dec 8, 2017
congestion added multipath to quic Dec 8, 2017
docs add gopher-logo May 3, 2016
example added multipath to quic Dec 8, 2017
h2quic added multipath to quic Dec 8, 2017
integrationtests added multipath to quic Dec 8, 2017
internal
qerr added multipath to quic Dec 8, 2017
.editorconfig add editorconfig Apr 15, 2016
.gitignore add debug.test (dvelve output) to gitignore May 3, 2016
.travis.yml
Changelog.md
LICENSE add Google to license file Dec 14, 2016
README.md Update README.md to contains setup instructions Feb 16, 2018
appveyor.yml added multipath to quic Dec 8, 2017
buffer_pool.go
buffer_pool_test.go
client.go added multipath to quic Dec 8, 2017
client_test.go added multipath to quic Dec 8, 2017
codecov.yml added multipath to quic Dec 8, 2017
conn.go add a LocalAddr to the Session Mar 9, 2017
conn_test.go
interface.go added multipath to quic Dec 8, 2017
packet_number_generator.go
packet_number_generator_test.go added multipath to quic Dec 8, 2017
packet_packer.go
packet_packer_test.go
packet_unpacker.go added multipath to quic Dec 8, 2017
packet_unpacker_test.go
path.go added multipath to quic Dec 8, 2017
path_manager.go added multipath to quic Dec 8, 2017
pconn_manager.go added multipath to quic Dec 8, 2017
quic_suite_test.go
scheduler.go added multipath to quic Dec 8, 2017
server.go added multipath to quic Dec 8, 2017
server_test.go added multipath to quic Dec 8, 2017
session.go added multipath to quic Dec 8, 2017
session_test.go added multipath to quic Dec 8, 2017
stream.go added multipath to quic Dec 8, 2017
stream_frame_sorter.go added multipath to quic Dec 8, 2017
stream_frame_sorter_test.go added multipath to quic Dec 8, 2017
stream_framer.go
stream_framer_test.go
stream_test.go
streams_map.go
streams_map_test.go

README.md

A QUIC implementation in pure Go

Please read https://multipath-quic.org/2017/12/09/artifacts-available.html to figure out how to setup the code.

Godoc Reference Linux Build Status Windows Build Status Code Coverage

quic-go is an implementation of the QUIC protocol in Go.

Roadmap

quic-go is compatible with the current version(s) of Google Chrome and QUIC as deployed on Google's servers. We're actively tracking the development of the Chrome code to ensure compatibility as the protocol evolves. In that process, we're dropping support for old QUIC versions. As Google's QUIC versions are expected to converge towards the IETF QUIC draft, quic-go will eventually implement that draft.

Guides

We currently support Go 1.9+.

Installing and updating dependencies:

go get -t -u ./...

Running tests:

go test ./...

Running the example server

go run example/main.go -www /var/www/

Using the quic_client from chromium:

quic_client --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io

Using Chrome:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --no-proxy-server --enable-quic --origin-to-force-quic-on=quic.clemente.io:443 --host-resolver-rules='MAP quic.clemente.io:443 127.0.0.1:6121' https://quic.clemente.io

QUIC without HTTP/2

Take a look at this echo example.

Using the example client

go run example/client/main.go https://clemente.io

Usage

As a server

See the example server or try out Caddy (from version 0.9, instructions here). Starting a QUIC server is very similar to the standard lib http in go:

http.Handle("/", http.FileServer(http.Dir(wwwDir)))
h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)

As a client

See the example client. Use a h2quic.RoundTripper as a Transport in a http.Client.

http.Client{
  Transport: &h2quic.RoundTripper{},
}

Contributing

We are always happy to welcome new contributors! We have a number of self-contained issues that are suitable for first-time contributors, they are tagged with want-help. If you have any questions, please feel free to reach out by opening an issue or leaving a comment.