Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 40 total
Thread Speed Issue over a VPN
Sat, Feb 6 2010 7:40 AMPermanent Link

rob
Hi all.

I'm trying to use data on my office LAN from home.  The application is on the Client computer at home.  The firewall on the LAN is a NetGear SRXN3025
which allows 10 VPN tunnels.  The Client computer is using NetGear PROSafe VPN Client software.

I set up the VPN and start running the application.  The DBISAM server on an office computer on the LAN with all the tables.

It take approximately 2 hours to load the data.  When running in the office it is about 30 seconds.

I'm sitting at the Client looking at the speed on the Local Area Connection.  It's about 10 bits every second.  If I launch Windows Explorer I can easily
browse the folders on the LAN computer and as I do so the packets throughput on Local Area Connection jump to about 50 bits per second.

Why does my application not make use of the maximum available upload speec from the LAN?

Thanks to anyone who can help me with this.
Sat, Feb 6 2010 12:40 PMPermanent Link

"Raul"
Rob,

No solutions but couple of suggestions.

I'm not sure what kind of a connection you have at home and office but even
50 bit is really, really slow - I do realize that was file share browsing
and might have not maxed out the connection but still! Even assuming bytes
it's still only 300bits per seconds (way slower than a dial-up modem for
example). Most modern ISPs that I know usually sell connections with
something like 1Mbps down / 256Kbps up (and better) so I will assume you
actually have a decent connection.  The  thruput you're seeing is way slow
and there might be a bigger problem there.

Before we worry about VPN I would suggest running an internet speed test
(for example at www.speedtest.net) to set a baseline. Ideally run one from
home as well as from office as you will be traversing both of those (and
connections in between) and you will most likely be limited by the upload
speed at work (since you're downloading DBISAM data to client which is an
upload from office perspective).

If you have admin access to the router I would temporarily open the dbisam
port to the internet (normally tcp 12005 but check your dbsrvr) and try
running the client application directly (not thru VPN) to see if you get
better results.
Based on personal experience the SMB grade VPN routers/firewalls tend to
have fairly poor VPN performance - most though still should be able to drive
the VPN at 1-2Mbps (this assumes you're the only VPN connection).

if you are seeing significantly faster performance directly then VPN is to
blame and I have listed some suggestions below - most also apply to direct
connection.

Many of the "slow performance" issues can be MTU related and I don't know
how NetGear VPN deals with it.  You could try checking to see what your MTU
size is :
- start VPN
- try running something like "ping  -f -l 1472 <ip of internal host>" from
command line
- if you see "Packet needs to be fragmented but DF set" then try lower
numbers (decrease by 10 for example). Google search of optimal mtu gives lot
of hits and suggestions on this.

Couple of other tings:
-use IP and not DNS name (and definitely not windows host names) when going
over VPN to server
- check and make sure you are using split-tunneling if possible (so as to
avoid your other network traffic going thru vpn connection)

Finally doing a wireshark capture might help pinpoint issues as well -
especially if there are errors or retries going on underneath on ip stack.

Raul



"rob" <rob@moonstone.co.uk> wrote in message
news:6BC09176-487F-4487-A997-A4CF3A1F010F@news.elevatesoft.com...
> Hi all.
>
> I'm trying to use data on my office LAN from home.  The application is on
> the Client computer at home.  The firewall on the LAN is a NetGear
> SRXN3025
> which allows 10 VPN tunnels.  The Client computer is using NetGear PROSafe
> VPN Client software.
>
> I set up the VPN and start running the application.  The DBISAM server on
> an office computer on the LAN with all the tables.
>
> It take approximately 2 hours to load the data.  When running in the
> office it is about 30 seconds.
>
> I'm sitting at the Client looking at the speed on the Local Area
> Connection.  It's about 10 bits every second.  If I launch Windows
> Explorer I can easily
> browse the folders on the LAN computer and as I do so the packets
> throughput on Local Area Connection jump to about 50 bits per second.
>
> Why does my application not make use of the maximum available upload speec
> from the LAN?
>
> Thanks to anyone who can help me with this.



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4842 (20100206) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


Mon, Feb 8 2010 8:37 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Rob,

<< It take approximately 2 hours to load the data.  When running in the
office it is about 30 seconds. >>

What do you mean by "load the data" ?  What is the actual process that is
going on ?

The easiest way to diagnose these types of issues is by using the
TDBISAMSession.RemoteTrace property along with the
TDBISAMSession.OnRemoteTrace event handler.  You can log the
requests/responses and how long they are taking in real time.  The DBISAM
utilities do this by using an OnRemoteTrace event handler like this:

{ You will find this unit in the \source subdirectory for any of the DBISAM
utilities installed as part of
the DBISAM Additional Software and Utilities download }

uses dbisamut;

procedure TMainForm.RemoteSessionRemoteTrace(Sender: TObject;
                                            TraceRecord: TTraceRecord);
var
  TempString: string;
begin
  with TraceRecord do
     begin
     TempString:=PadRight(DateTimeToStr(DateTime),24,' ');
     case EventType of
        teConnect:
           TempString:=TempString+' '+PadRight('Connect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teReconnect:
           TempString:=TempString+' '+PadRight('Re-connect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teDisconnect:
           TempString:=TempString+' '+PadRight('Disconnect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teRequest:
           TempString:=TempString+' '+PadRight('Request',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ')+
                                  ' '+PadRight(RemoteRequestName,30,' ')+
                                  '
'+PadRight(IntToStr(RemoteRequestSize)+' bytes',16,' ');
        teReply:
           TempString:=TempString+' '+PadRight('Reply',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ')+
                                  ' '+PadRight(RemoteReplyResultName,30,'
')+
                                  ' '+PadRight(IntToStr(RemoteReplySize)+'
bytes',16,' ');
        end;
     end;
   LogMemo.Lines.Add(TempString);
end;

Just put a TMemo on the form somewhere (or on a new non-modal form that is
displayed when your application executes), and you will see all of the C/S
activity pop up on the memo control in real-time.

--
Tim Young
Elevate Software
www.elevatesoft.com

Sat, Feb 13 2010 3:01 PMPermanent Link

rob
Well, I've managed to improve things slightly by changing the encryption method.  Waiting to hear from Netgear to see if I can dump encryption for the
data altogether.

Have tried your code Tim but it falls over as shown below.

          TempString:=TempString+' '+PadRight('Reply',10,' ')+
          ' '+PadRight(IntToStr(ElapsedTime)+'msecs',16,' ')+
          ' '+PadRight(RemoteReplyResultName,30,'')+   <---------Here
          ' '+PadRight(IntToStr(RemoteReplySize)+'bytes',16,' ');

Compiler message is [Pascal Error] DMMainUnit.pas(2332): E2010 Incompatible types: 'Char' and 'string'

How doI fix this?

Thanks
Sun, Feb 14 2010 4:03 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

rob


Since IntToStr is OK I'd guess ' RemoteReplyResultName is an array of char or something similar so a cast like

'+PadRight(string(RemoteReplyResultName),30,'')

should work,

Roy Lambert [Team Elevate]
Tue, Feb 16 2010 12:11 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Rob,

<< Have tried your code Tim but it falls over as shown below.

          TempString:=TempString+' '+PadRight('Reply',10,' ')+
          ' '+PadRight(IntToStr(ElapsedTime)+'msecs',16,' ')+
          ' '+PadRight(RemoteReplyResultName,30,'')+   <---------Here
          ' '+PadRight(IntToStr(RemoteReplySize)+'bytes',16,' ');

Compiler message is [Pascal Error] DMMainUnit.pas(2332): E2010 Incompatible
types: 'Char' and 'string' >>

The PadRight function is in the dbisamlb.pas unit, so make sure that you
don't have a conflict with another PadRight implementation.

--
Tim Young
Elevate Software
www.elevatesoft.com

Tue, Feb 16 2010 1:56 PMPermanent Link

Aage Johansen
rob wrote:
> Well, I've managed to improve things slightly by changing the encryption method.  Waiting to hear from Netgear to see if I can dump encryption for the
> data altogether.
>
> Have tried your code Tim but it falls over as shown below.
>
>            TempString:=TempString+' '+PadRight('Reply',10,' ')+
>            ' '+PadRight(IntToStr(ElapsedTime)+'msecs',16,' ')+
>            ' '+PadRight(RemoteReplyResultName,30,'')+   <---------Here
>            ' '+PadRight(IntToStr(RemoteReplySize)+'bytes',16,' ');
>
> Compiler message is [Pascal Error] DMMainUnit.pas(2332): E2010 Incompatible types: 'Char' and 'string'
>
> How doI fix this?
>
> Thanks
>

I haven't really looked into this, but is there a reason for an empty
string (in the offending line) - you are using a space character (or a
string of 1 <space>) elsewhere.

--
Aage J.
Wed, Feb 17 2010 12:20 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Aage,

<< I haven't really looked into this, but is there a reason for an empty
string (in the offending line) - you are using a space character (or a
string of 1 <space>) elsewhere. >>

It's a space in the actual code, so it must have been modified when I pasted
it.

--
Tim Young
Elevate Software
www.elevatesoft.com

Wed, Feb 24 2010 5:08 AMPermanent Link

Rob
Thank you everyone for your suggestions.

I'm slowly getting there.  Using a memo (as suggested by Tim) to track my code I got the bottleneck as being a query retrieving data for events in
a DevEx Scheduler.

I've now fiddled with RemoteCompression and RemoteReadsize and am down to 50 seconds to load 69 records over the VPN.  In the office it takes
a fraction of a second.  There are 5500 records in the table and the 69 are queried by setting dates as displayed by the calendar attached to the
Scheduler.  I was originally trying to load the lot which is clearly not an option.

I will run the code suggested by Tim (without the space) and report back.

Netgear advise there is a considerable load on the computers in respect of encryption.  I'm assuming they refer to the Client machine as I cannot
see how the VPN router can sub contract the encryption to the 'server' in the office.

The application is unusable working at this speed.  I have to get the speed up to be able to demonstrate to possible Clients that the application can
be used when they have several offices with the data stored in the head office.

The 'server' is a cheap HP desktop.  I'm wondering if there could be any benefit in replacing it with a faster machine with RAID.  That said, it works
fine when the Client is on the LAN.

I've ran a Broadband Speed Test at the office just now.  It says the upload speed is 0.51Mbps.  Could that perhaps be the problem?  The office LAN
says it is a 1.0 Gbps network.  I'll probably get corrected here but that sounds like the LAN is 2000 times faster than the ADSL upload speed
although I guess the network speed refers to a capacity that is limited by other considerations.

Is anyone able to comment on this?
Wed, Feb 24 2010 8:07 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Rob

>I've now fiddled with RemoteCompression and RemoteReadsize and am down to 50 seconds to load 69 records over the VPN. In the office it takes
>a fraction of a second. There are 5500 records in the table and the 69 are queried by setting dates as displayed by the calendar attached to the
>Scheduler. I was originally trying to load the lot which is clearly not an option.

1. How much data is there in the 69 records, 2. are you sure that's all that's being transferred, 3. I don't know the DevEx scheduler so is it possible that its getting one record, doing something, doing the next etc

Something you may want to consider is generating the query results on the server, streaming those results over to the client and then loading the DevEx control from there.

>The 'server' is a cheap HP desktop. I'm wondering if there could be any benefit in replacing it with a faster machine with RAID. That said, it works
>fine when the Client is on the LAN.

If the bottleneck's in comms upgrading the server is unlikely to help.

>I've ran a Broadband Speed Test at the office just now. It says the upload speed is 0.51Mbps. Could that perhaps be the problem? The office LAN
>says it is a 1.0 Gbps network. I'll probably get corrected here but that sounds like the LAN is 2000 times faster than the ADSL upload speed
>although I guess the network speed refers to a capacity that is limited by other considerations.

If the broadband access is ADSL then you have a fast download coupled with a not so fast upload. In may case its (upto)

DownStream Connection Speed
8128 kbps
UpStream Connection Speed
448 kbps

pulled straight off my Netgear DB834G router

So .51Mb upload isn't to bad, but your calculations are right its about 2000x slower on upload than a LAN. Even the download speed is going to be more than 100x slower.

Also these speeds are "at best". If you have a straight line or guaranteed connection between the two point you should get this sort of speed, if its being routed around a bit it can be slower and also if you share the connection with others (I think BT have c50:1 contention) the actual bandwidth will be a lot lower.

Roy Lambert
Page 1 of 4Next Page »
Jump to Page:  1 2 3 4
Image