I have two (similar) boxes A and B using the same Internet
connection to access an SVN server S. A accesses S via a VPN - thus, in
order to check out a source tree T from A I do

svn co svn+ssh://S/T

in A.

B, however, accesses S via SSH tunneling (B could possibly use
the VPN but let's just assume that it can't) as follows:

1) In B, in ~/.subversion/config, under the [tunnels] section add

sbox = ssh -p 2022

2) In B do

ssh -fngT -L 2022:S:22 -C M ping -i 30 localhost > /dev/null 2>&1

where M is a box that B can SSH into directly from the Internet, and M
and S are in the same internal LAN, not directly accessible from A
(except through the VPN which, like I said, B can't use.)

3) In B get the tree T with the command

svn co svn+sbox://localhost/T

This recipe works, but it is MUCH slower than using the VPN. In
particular, it seems to be the case that it is the connection phase
itself that takes a long time - once connection has been established, the
bulk data transfer rate seems to be similar to that attained with the VPN.

Anybody have any idea why there should be such a difference? Like
I said, I suspect a connection establishment slowdown in the SSH
tunneling. Can any SSH gurus suggest strategies to explore this issue?
The SSH software in all cases is OpenSSH in different versions, but all
of them 4.*.