Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <20030507115755.56502.qmail@web20804.mail.yahoo.com> Date: Wed, 7 May 2003 04:57:55 -0700 (PDT) From: Brian Genisio Reply-To: brian AT genisio DOT org Subject: Re: SSH tunneling buffers... To: cygwin AT cygwin DOT com Cc: pechtcha AT cs DOT nyu DOT edu MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Thu, 1 May 2003, Brian Genisio wrote: > Hi all... > > I am using SSH to tunnel (Using LocalForwarding ports) from one application to > another. The system exists of a controller software in Linux (where the SSH > server resides), and the actual software in Cygwin. > > Cygwin connects to the Linux SSH server and sets up a port forward. The Linux > app sends a small amount of data (about 12 bytes) 30 times per second. > > The problem is that the Cygwin/SSH side of the tunnel is buffering the data > before it sends it to the Cygwin app. The result is the data is received in > bursts, and the control is not fluid. > > I have tried this system in a Linux to Linux situation, and the buffering did > not happen. Also, I have tried sending data from Cygwin to Linux, and the > buffering does not happen. It only happens when data is being sent from Linux > to Cygwin. > > I have also tried switching between LocalForward and RemoteForward, and it is > the dirction that matters, not the type of port forwarding. > > Both sides sets the TCP_NODELAY flag before it starts sending, and I know the > SSH code does the same... > > Any ideas? > Brian #Brian, # #Does "ssh -vvv" show anything that could be related to this? #Igor It turns out we found the problem for this. It is a bug in SSH (sshd). When the SSH daemon receives the initial connection (accept), it is not setting TCP_NODELAY on the main socket (it does it for all forwarding sockets, but neglects to do it on the main connection). Because of this, traffic coming from the daemon side gets buffered, and we get a bursting effect. The solution, of course, is to call set_nodelay(newsock) just after the accept, and the problem is fixed. I sent a mail off to the SSH development list yesterday, and I am waiting for a response... none yet. Thought you might want to know, Brian __________________________________ Do you Yahoo!? The New Yahoo! Search - Faster. Easier. Bingo. http://search.yahoo.com -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/