diff options
author | Roger <wenrui@gmail.com> | 2011-01-11 20:52:02 +0800 |
---|---|---|
committer | Avery Pennarun <apenwarr@gmail.com> | 2011-01-25 21:05:13 -0800 |
commit | fdb7c9b9953deead6dcaff5a2aa13a581180fabe (patch) | |
tree | 55498e42ff75dca2e11c84f59bac1f78616156d0 | |
parent | 675f19f57e23a640cea64b79f2c368f233f6660b (diff) |
new option to disable fullness checking
On high latency links, the PING/PONG round trip triggered by fullness
checking could kill the bandwidth. Disabling it could result in >10x
bandwidth increase in some setups where the existing latency is already high
and the available bandwidth is also high.
-rw-r--r-- | assembler.py | 1 | ||||
-rwxr-xr-x | main.py | 5 | ||||
-rw-r--r-- | ssh.py | 5 | ||||
-rw-r--r-- | ssnet.py | 7 |
4 files changed, 11 insertions, 7 deletions
diff --git a/assembler.py b/assembler.py index c478e37..e65d11e 100644 --- a/assembler.py +++ b/assembler.py @@ -21,6 +21,7 @@ while 1: break verbose = verbosity +no_fullness = no_fullness0 sys.stderr.flush() sys.stdout.flush() main() @@ -1,6 +1,6 @@ #!/usr/bin/env python import sys, os, re -import helpers, options, client, server, firewall, hostwatch +import helpers, options, client, server, firewall, hostwatch, ssnet import compat.ssubprocess as ssubprocess from helpers import * @@ -51,6 +51,7 @@ sshuttle --server sshuttle --firewall <port> <subnets...> sshuttle --hostwatch -- +f,disable-fullness turn off fullness checking (could 10x bandwidth on high latency link) l,listen= transproxy to this ip address and port number [127.0.0.1:0] H,auto-hosts scan for remote hostnames and update local /etc/hosts N,auto-nets automatically determine subnets to route @@ -73,7 +74,7 @@ o = options.Options('sshuttle', optspec) if opt.daemon: opt.syslog = 1 helpers.verbose = opt.verbose - +ssnet.no_fullness = opt.disable_fullness try: if opt.server: if len(extra) != 0: @@ -1,6 +1,6 @@ import sys, os, re, socket, zlib import compat.ssubprocess as ssubprocess -import helpers +import helpers, ssnet from helpers import * @@ -63,8 +63,9 @@ def connect(ssh_cmd, rhostport, python, stderr): import sys; skip_imports=1; verbosity=%d; + no_fullness0=%d; exec compile(sys.stdin.read(%d), "assembler.py", "exec") - """ % (helpers.verbose or 0, len(content)) + """ % (helpers.verbose or 0, ssnet.no_fullness or 0, len(content)) pyscript = re.sub(r'\s+', ' ', pyscript.strip()) @@ -35,7 +35,7 @@ cmd_to_name = { CMD_HOST_LIST: 'HOST_LIST', } - +no_fullness = 0 def _add(l, elem): if not elem in l: @@ -308,7 +308,7 @@ class Mux(Handler): return total def check_fullness(self): - if self.fullness > 32768: + if not no_fullness and self.fullness > 32768: if not self.too_full: self.send(0, CMD_PING, 'rttest') self.too_full = True @@ -326,7 +326,8 @@ class Mux(Handler): debug2(' > channel=%d cmd=%s len=%d (fullness=%d)\n' % (channel, cmd_to_name.get(cmd,hex(cmd)), len(data), self.fullness)) - self.fullness += len(data) + if not no_fullness: + self.fullness += len(data) def got_packet(self, channel, cmd, data): debug2('< channel=%d cmd=%s len=%d\n' |