summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger <wenrui@gmail.com>2011-01-11 20:52:02 +0800
committerAvery Pennarun <apenwarr@gmail.com>2011-01-25 21:05:13 -0800
commitfdb7c9b9953deead6dcaff5a2aa13a581180fabe (patch)
tree55498e42ff75dca2e11c84f59bac1f78616156d0
parent675f19f57e23a640cea64b79f2c368f233f6660b (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.py1
-rwxr-xr-xmain.py5
-rw-r--r--ssh.py5
-rw-r--r--ssnet.py7
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()
diff --git a/main.py b/main.py
index 66954f8..cab6a2b 100755
--- a/main.py
+++ b/main.py
@@ -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:
diff --git a/ssh.py b/ssh.py
index ac7f411..9d3a8eb 100644
--- a/ssh.py
+++ b/ssh.py
@@ -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())
diff --git a/ssnet.py b/ssnet.py
index 62fa378..9cd42a0 100644
--- a/ssnet.py
+++ b/ssnet.py
@@ -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'