Forum Discussion

Johanvdv's avatar
Johanvdv
Level 4
14 years ago

How to Detect slow network connection

We have a working BESR 8.5 with management solution installation on our site.

Our Windows 7 or Windows XP clients are backed up on a daily basis to a central backup server.

 

Problem is that when our employees are out of the office, they report that the backup executes when they are connected using the VPN (broadband internet and a Juniper SSL VPN connection with Network Connect option).

 

Is there a way to skip the execution of a backup job when a 'slow network' is detected ?

I have not been able to find any option in the interface that would allow me to specify a mimimum speed on the connection for a backup to start.

Creating a before capture script sounds like the only option available.

 

Is there someone out there who has resolved a similar situation or who handles this problem using other techniques ?

I have also looked into the functionality provided by SSR 2011 and could not find a different solution.

  • I have created a solution myself that works for our environment (BESR 8.5.x clients with management component).

    To this end, I have created a backup job that has the following batch file executed in the before data capture event :

     

     

    I had to add a helper .vbs script so the Add file filter was to be put to *.* in order to upload the this file.

    The check-speed.bat file currently contains the following code :

     @ECHO OFF
    echo START >>"%~dp0check-speed.log"
    echo Executing ["%~dp0script-short.vbs"] >>"%~dp0check-speed.log"
    
    cscript //nologo "%~dp0script-short.vbs" 1>>"%~dp0check-speed.log" 2>>&1
    rem cscript //nologo script.vbs 1>>c:\Log.txt 2>>&1
    IF ERRORLEVEL 1 GOTO LOW-SPEED
    IF ERRORLEVEL 0 GOTO LOCAL
    
    :LOW-SPEED
    ECHO Connected to a low-speed network (VPN) so cancel the backup >>"%~dp0check-speed.log"
    EXIT /B 1
    GOTO END
    
    :LOCAL
    ECHO Connected to the local network so proceed with backup >>"%~dp0check-speed.log"
    EXIT /B 0
    GOTO END
    
    :END
    ECHO ending the check-speed in an undesired place >>"%~dp0check-speed.log"
    EXIT /B 0 

    The salient part is that this .bat file will call the .vbs script and depending on its outcome it will return an exit code to Backup Exec System Recovery.

    If the exit code is not zero, then the before capture event failed and the backup job will also fail (no backup).

    The .vbs script is something I found via Google (I have to give credit) that will enumerate all 'Network Adapters' and if a MAC address is assigned and the name of the Adapter contains 'JUNIPER' do a check wether this adapter is connected.

    If it is connected, a return code of 1 is set.

    I am using this test (there is definitely a better one around) as my VPN connection is of the SSL Juniper type and this adapter becomes active when a LAPTOP connects to our internal network using the Network connect option.

    I could not do a reliable test on network speed as the 'fake' JUNIPER network connector reports the theoretical speed that is possible (1 Gbit) and not the actual internet speed. To get around this, I would have to run an internet connection speed test on every connection and this is beyond what I want to do here. 

     '  Set NIC.vbs
    '  VBScript to check your network connection.
    '  Author Guy Thomas http:// computerperformance.co.uk/
    '  Version 4.9 - October 3th 2004
    '  --------------------------------------------------------------'
    Option Explicit
    Dim objWMIService, ObjItem
    Dim GuyMessage, strComputer, colItems
    'On Error Resume Next
    strComputer = "."
    
    '   These Set commands are important.
    '    See Learning Points after / below the script
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer _
    & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapter",,48)
    
    For Each objItem in colItems
    
    If objItem.MACAddress <> "" and Instr(Ucase(objItem.Name),"JUNIPER") > 0 Then
    ' Remove objItem's that you do not want.
    WScript.Echo "Name: " & objItem.Name & vbCRLf & _
    "Net Connection ID: " & objItem.NetConnectionID & vbCRLf & _
    "Net Connection Status: " & objItem.NetConnectionStatus & vbCRLf & _
    "Computer Name: " & objItem.SystemName & vbCRLf & _
    "Speed: " & objItem.Speed & vbCRLf & _
    ""
      if objItem.Netconnectionstatus = "2" then
         WScript.Echo "Connected via VPN using NC : OK." 
         WScript.Quit 1       
         If CDBl(objItem.speed) > 80000000 then
            WScript.Echo "Connection SPEED ? : OK."
            WScript.Quit 0
         else
            WScript.Echo "Connection SPEED ? : SLOW."
            WScript.Quit 1
         end if   
      else
         WScript.Echo "Connected via VPN using NC : NOT."    
         WScript.Quit 0
      end if 
       
    End IF
    Next
    
    WScript.Quit 0 

     

     

     

6 Replies

  • For me too the pre command script seems to be the only solution.

     

    But you could try also to set the network throttle, but this would limit the used bandwidth also when the client is NOT using the VPN.

  • Next to network speed (the incoming VPN bandwidth is limited) there is also the issue of volume transmitted.

    Within our country, most internet service providers charge based on a maximum allowed volume of serveral GB's. When you start to send out an image that is several GB or compare your local disk's data with a previous backup image that is also several GB, you eventually run into problems.

    My employees have an upload speed on average of 1Mbit and my office is limited to an upload speed of about 2Mbit. This means if I have employees running a BESR backup at the same time, it effectivily brings to a halt all internet connectivity for the other employees who are in the office.

    I have started to look a bit deeper into the pre-command scripting : there is something strange going on with application paths.

    On a Win7 system, the scripts are downloaded (via the package/management control) to the location : "C:\ProgramData\Symantec\Backup Exec System Recovery\CommandFiles".

    You can only select .BAT and .EXE extensions in the interface but you can expand it using a *.* selection to other extensions (e.g. a .vbs for use with cscript).

    The kicker is that the 'current path' of the pre-command script is c:\windows\system32 so this means that you have to explicitly specify a fixed locaton for all components (sub-scripts, logfiles, ...)

    As I also have to support Windows XP, this sounds like 'a feature'. I would have expected the current directory to be the ...CommandFiles location.

    Anyway : is it possible to use the Altiris layer for this in SSR 2011?

     

  • Altiris layer for this in SSR 2011?

    -->Yes and you can also manage BESR 8.5 using the Altiris Layer

  • I have created a solution myself that works for our environment (BESR 8.5.x clients with management component).

    To this end, I have created a backup job that has the following batch file executed in the before data capture event :

     

     

    I had to add a helper .vbs script so the Add file filter was to be put to *.* in order to upload the this file.

    The check-speed.bat file currently contains the following code :

     @ECHO OFF
    echo START >>"%~dp0check-speed.log"
    echo Executing ["%~dp0script-short.vbs"] >>"%~dp0check-speed.log"
    
    cscript //nologo "%~dp0script-short.vbs" 1>>"%~dp0check-speed.log" 2>>&1
    rem cscript //nologo script.vbs 1>>c:\Log.txt 2>>&1
    IF ERRORLEVEL 1 GOTO LOW-SPEED
    IF ERRORLEVEL 0 GOTO LOCAL
    
    :LOW-SPEED
    ECHO Connected to a low-speed network (VPN) so cancel the backup >>"%~dp0check-speed.log"
    EXIT /B 1
    GOTO END
    
    :LOCAL
    ECHO Connected to the local network so proceed with backup >>"%~dp0check-speed.log"
    EXIT /B 0
    GOTO END
    
    :END
    ECHO ending the check-speed in an undesired place >>"%~dp0check-speed.log"
    EXIT /B 0 

    The salient part is that this .bat file will call the .vbs script and depending on its outcome it will return an exit code to Backup Exec System Recovery.

    If the exit code is not zero, then the before capture event failed and the backup job will also fail (no backup).

    The .vbs script is something I found via Google (I have to give credit) that will enumerate all 'Network Adapters' and if a MAC address is assigned and the name of the Adapter contains 'JUNIPER' do a check wether this adapter is connected.

    If it is connected, a return code of 1 is set.

    I am using this test (there is definitely a better one around) as my VPN connection is of the SSL Juniper type and this adapter becomes active when a LAPTOP connects to our internal network using the Network connect option.

    I could not do a reliable test on network speed as the 'fake' JUNIPER network connector reports the theoretical speed that is possible (1 Gbit) and not the actual internet speed. To get around this, I would have to run an internet connection speed test on every connection and this is beyond what I want to do here. 

     '  Set NIC.vbs
    '  VBScript to check your network connection.
    '  Author Guy Thomas http:// computerperformance.co.uk/
    '  Version 4.9 - October 3th 2004
    '  --------------------------------------------------------------'
    Option Explicit
    Dim objWMIService, ObjItem
    Dim GuyMessage, strComputer, colItems
    'On Error Resume Next
    strComputer = "."
    
    '   These Set commands are important.
    '    See Learning Points after / below the script
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer _
    & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapter",,48)
    
    For Each objItem in colItems
    
    If objItem.MACAddress <> "" and Instr(Ucase(objItem.Name),"JUNIPER") > 0 Then
    ' Remove objItem's that you do not want.
    WScript.Echo "Name: " & objItem.Name & vbCRLf & _
    "Net Connection ID: " & objItem.NetConnectionID & vbCRLf & _
    "Net Connection Status: " & objItem.NetConnectionStatus & vbCRLf & _
    "Computer Name: " & objItem.SystemName & vbCRLf & _
    "Speed: " & objItem.Speed & vbCRLf & _
    ""
      if objItem.Netconnectionstatus = "2" then
         WScript.Echo "Connected via VPN using NC : OK." 
         WScript.Quit 1       
         If CDBl(objItem.speed) > 80000000 then
            WScript.Echo "Connection SPEED ? : OK."
            WScript.Quit 0
         else
            WScript.Echo "Connection SPEED ? : SLOW."
            WScript.Quit 1
         end if   
      else
         WScript.Echo "Connected via VPN using NC : NOT."    
         WScript.Quit 0
      end if 
       
    End IF
    Next
    
    WScript.Quit 0