Gota is a userspace multipath tcp solution.
Gota Active End(aka client) receives tcp traffic and forwards to Gota Passive End(aka server) use multipath tcp connections.
Sometimes, our network administrator enables rate-limiting for every tcp connection, the speed of our tcp connections can't reach the top. But if we create multi tcp connections, the traffic of all connections can be aggregated to reach the top speed.
We can use Gota as a library, or daemon.
- Build from source
go get github.com/jim3ma/gota/gota
Or
- Download from Release page according to you os and architecture.
PS: the config files already exist in
examples
folder, you can make a reference.
- Update and save as config.server.yml
# default for server, did not change it
mode: server
# log level: info debug warn error fatal panic
log: debug
verbose: true
# tunnel authenticate credential
auth:
username: gota
password: gota
# white list for remote ip
#whiteips:
# - 127.0.0.1/32
# remote address with port for forwarding traffic
# suppose you want to speed up you 8080 port
remote: 127.0.0.1:8080
# PS: try to enable fast open and pool for speed up connection time
# fast open in server
fastopen: true
# connection pool in server
pool:
enable: false
count: 10
# sometimes server will close some connections for long idle time,
# set keepalive to refresh connections which idle for the special time.
# unit: second
# 0: do not refresh connections
keepalive: 10
# tunnel listen address with port
tunnel:
- listen: 127.0.0.1:12333
- listen: 127.0.0.1:12336
- Launch Server
gota server --config config.server.yml
- Update and save as config.client.yml
# default for server, did not change it
mode: client
# log level: info debug warn error fatal panic
log: debug
verbose: true
# tunnel authenticate credential
auth:
username: gota
password: gota
# local listen address with port
listen: 127.0.0.1:12363
# PS: try to enable fastopen and pool for speed up connection time
# fast open in server
fastopen: true
# Gota server addresses with port
tunnel:
- remote: 127.0.0.1:12333 # connect server directly
- remote: 127.0.0.1:12336
# connect server using a proxy, currently Gota support http/https/socks5 proxy
proxy: http://gota:gota@127.0.0.1:3128
- Launch Client
gota client --config config.client.yml
telnet 127.0.0.1:12363
# or
curl 127.0.0.1:12363
TBD
Contributions are welcome.
Copyright 2013-2017 Jim Ma
This software is licensed under the terms of the Apache License Version 2. See the LICENSE file.