4BAL_SFT.TXT
Technical Information Document (TID) # 2917684

Load Balancing on a local LAN with 4.1 SFT III servers
------------------------------------------------------
These instructions are for a 4.1 SFT III server.  See the file 4BALANCE.TXT
for instructions on how to enable local load balancing on a 4.1 server
that is not running SFT III.

         
          _______                             Client A     _______ 
         |      | NIC1________IPX Network 123___| ________|       |      
         | File |                                         |       |      
         |      |                                         |       |
         |      | NIC2____IPX Network 123_________________|       | 
         |Server|                                         |       |
         |      |                                         |       |
         | IO1  |                                         |       | 
         |______|                                         | Switch|
                                                          |       |                                     
         _______                                          |       |                                   
         |      | NIC1________IPX Network 123_____________|       |      
         | File |                                         |       |      
         |      |                                         |       |
         |      | NIC2____IPX Network 123_________________|       | 
         |Server|                                         |       |
         |      |                                         |       |
         | IO2  |                                         |_______| 
         |______|                               
                                               
Scenario: 
You have 2 or more, network cards bound to the same IPX network number
(address) to different ports in the same switch.  You can get more
bandwidth from this LAN with Load Balancing.
 
How do I enable Load Balancing on the local LAN? 

The configuration can be done on a server with or without INETCFG;
therefore follow the steps in section A if you DO NOT use INETCFG, 
and follow the steps in section B if you DO use INETCFG.
This information is also written up in TID2917684. Check the WWW or 
Compuserve or Novell Support Connection CD for the latest update of 
these instructions.


A. Configuring Local Load Balancing on a 4.1 SFT III without INETCFG
--------------------------------------------------------------------

1. Enable NLSP on each I/O engine.

To do this, edit the .NCF that you use to load and bind the LAN drivers 
and add the following statements BEFORE IPX is bound to the LAN drivers:

LOAD IPXRTR ROUTING=NLSP CFGDIR=SYS:ETC\IO1
LOAD IPXRTRNM

Remember to do this on each I/O engine.
NOTE:  Do not load IPXRTR.NLM on the MS engine.  It is not supported at 
this time.


Example .NCF file:
.................................................................
LOAD CPQ2ETH NAME=CPQ2ETH_11_E82 FRAME=Ethernet_802.2 port=6000 
LOAD CPQ2ETH NAME=CPQ2ETH_12_E82 FRAME=Ethernet_802.2 port=6020 

LOAD IPXRTR ROUTING=NLSP CFGDIR=SYS:ETC\IO1
LOAD IPXRTRNM

BIND IPX CPQ2ETH_11_E83 net=10
BIND IPX CPQ2ETH_12_E83 net=10

SET LOAD BALANCE LOCAL LAN = ON

load conlog file=SYS:ETC\IO1\console.log
load btrvstub
load brouter
load snmp config=SYS:ETC\IO1

unload conlog
.................................................................


2. Run the command SET LOAD BALANCE LOCAL LAN = ON on each I/O engine, after 
IPXRTR has been loaded (in .NCF files on each I/O engine is fine).

 
3. Set "Maximum Number of Path Splits to 8 on each I/O engine:
To do this add the following statements in SYS:ETC\IO1\NLSP.CFG and
SYS:ETC\IO2\NLSP.CFG:

       { GLOBAL
         MaxPaths=8;
       }

NOTE: If { GLOBAL
         }
already exists, insert the following line in between the braces
as above:  

MaxPaths=8;  



B. Configuring Local Load Balancing on a 4.1 SFT III with INETCFG
-----------------------------------------------------------------

1. Enable NLSP on each I/O engine by adding the following two lines
to the SYS:ETC\IO1\INITSYS.NCF and SYS:ETC\IO2\INITSYS.NCF files.  
Read the following paragraph for details.

LOAD IPXRTR ROUTING=NLSP CFGDIR=SYS:ETC\IO1 
LOAD IPXRTRNM

Typically you enable NLSP routing in the Protocols->IPX section of INETCFG;
however, on an SFT III server IPX needs to be loaded and bound to an 
interface card BEFORE the INTIALIZE SYSTEM command (which executes the 
information entered in INETCFG).  A common file to enable NLSP is the 
SYS:ETC\IO1\INITSYS.NCF and SYS:ETC\IO2\INITSYS.NCF files.  Below is an 
example file; the 3rd line is how NLSP is enabled with IPXRTR.NLM.
The 4th line, LOAD IPXRTRNM, adds SNMP instrumentation for
IPX, NLSP and RIP/SAP MIB variables; it is recommended but not required.

.................................................................
LOAD CPQ2ETH NAME=CPQ2ETH_11_E82 FRAME=Ethernet_802.2 port=6000 
LOAD CPQ2ETH NAME=CPQ2ETH_12_E82 FRAME=Ethernet_802.2 port=6020 

LOAD IPXRTR ROUTING=NLSP CFGDIR=SYS:ETC\IO1 
LOAD IPXRTRNM

BIND IPX CPQ2ETH_11_E83 net=15
BIND IPX CPQ2ETH_12_E83 net=16 

SET LOAD BALANCE LOCAL LAN = ON

load conlog file=SYS:ETC\IO1\console.log
load btrvstub
load brouter
load snmp config=SYS:ETC\IO1
initialize system
unload conlog
.................................................................

NOTE:  Although this file INITSYS.NCF has a warning statement to not edit
the file; it is OK to edit the INITSYS.NCF.   HOWEVER, it is not okay to
edit the NETINFO.CFG files; the WARNING in the NETINFO.CFG MUST be
adhered to.

NOTE2:  Do not enable Advanced IPX (or load IPXRTR.NLM) on the MS engine.  
It is not supported at this time.

NOTE3:  This example INITSYS.NCF file example above includes the loading 
of both LAN drivers. You need to load at least ONE LAN driver before the 
INITIALIZE SYSTEM command. You can load the other LAN driver in INETCFG, 
and it will be loaded when the INITIALIZE SYSTEM command is run.


2. Run the command SET LOAD BALANCE LOCAL LAN = ON on each I/O engine, 
after IPXRTR has been loaded (in the SYS:ETC\IOx\INITSYS.NCF files is fine).

 
3. Set "Maximum Number of Path Splits to 8, in the INETCFG->Protocols->IPX->
Expert Configuration Options of INETCFG on each I/O engine.
If this field is not editable, make sure the Routing Protocol is set to 
'NLSP with RIP/SAP compatiblity' on the INETCFG->Protocols->IPX screen.

 
B. How do I check that it's working? 
1. Load DEVMON.NLM and compare the packets TRANSMITTED from each of the cards 
bound to the same IPX network number.  The number of packets should be more 
or less equal, although one will be slightly higher, as the server sends 
all non-broadcast NLSP packets onto an IPX network through just one card.  
Remember, the server has no control over how packets are received - you 
may have only one client attached and it will be sending all data to one 
card in the server.
(DEVMON.NLM allows you to displays LAN and MSL statistics on 4.1 SFT III; 
DEVMON.EXE is available in the NSD section of NetWire and FTP.NOVELL.COM.)
  
2. With Load Balancing turned on, the server should only be sending one RIP
to the Specific Route Requests it receives.  You can check this in a
LANalyzer trace or with TRACK ON. 
 
 
C. What is the server doing differently that enables Load Balancing?
 
1. IPX NCP packets and Specific Route Response packets, destined for the
local LAN, will be sent from the NICs in a round robin fashion.  The NLSP
MaxPathSplits parameter tells IPXRTR how many duplicate, equal cost paths,
to store in its forwarding table.  When IPXRTR has a packet to send to
network 123, it looks in the forwarding table and uses the equal cost paths
to that network in a round robin.  (ie. This time the packet goes out NIC
1, next time NIC 2, NIC 3 and back to NIC 1, etc.)
 
2.  The server will only send one response for Specific Route RIP Requests.

When NetWare clients try to reach an IPX service, for the first time, they
broadcast a Specific Route Request for the IPX network number, where that
service resides (this is sometimes called a Get Local Target RIP Request). 
Because it is broadcast, this packet is received on all NICs bound to that
LAN.  Instead of responding through each NIC, IPXRTR will send only one RIP
response and that response will be part of the round robin for packets to
that LAN.
       
NetWare clients cache the MAC address provided in the RIP response, and
use it to reach that particular IPX network, until they lose the
connection.  In the context of Load Balancing, clients receive RIP
responses from random cards in the server (they are part of the round robin
of packets coming from the server), and this should help balance the
incoming load to the server.  Note that you may not see a well balanced
incoming load to a server with just a few clients - they all could be
sending to the same card in the server, and one could be sending a lot more
data than others.  Over time and with more clients, the incoming load
should become more balanced over the NICs.
 
D. Does this work for both RIP/SAP and NLSP? 
No, only NLSP, but that shouldn't cause any problems on your network
because NLSP is RIP/SAP compatible.
 
E. Why do you need to load IPXRTR and enable NLSP routing for Load
Balancing on the local LAN, when there are no routers in the picture?
  
The server will build and use a Forwarding Table with duplicate equal cost
routes - that results in the outgoing packets being balanced between the
NICs.  This is what NLSP allows.  Even when a packet is only going to the
local segment, IPXRTR needs to look in the Forwarding Table to find the
Next Hop to that segment.  Also, IPXRTR needs to see incoming Specific
Route Requests so that it knows to send only one response.  
Basically, IPXRTR should be handling all IPX packets coming and going from
the server, there is no logic for this in the old IPX routing software.
 
F. Will this Load Balancing effect the other segments the server is
attached to?
 
No, since those other segments have different IPX network numbers, they
will have different entries in the Forwarding Table and not be effected
by what's happening on your load balanced segment.  If, however, you have
doubled up the cards on several segments, the SET LOAD BALANCE LOCAL
LAN=ON will enable Load Balancing on all segments; there's no way to
balance on just one of those IPX networks.  It's either all or none.
 
 
G. Is it safe to do Load Balancing in a bridged token ring segment? 
 
Sometimes, but be careful!  In the scenario below it is safe to bind the
two NICs to the same IPX number.  HOWEVER, if you turn on Load Balancing,
sometimes the server will be sending packets to Client 2 out of NIC 1,
through the bridge.  This probably isn't what you want.  What you probably
want, is all traffic between Server and Client 2 to go through NIC2. 
Without Load Balancing, the server will respond to Specific RIP Requests
out of both NICs, and the Client2 will use the one it receives first - very
likely one out of NIC2.

DO NOT LOAD BALANCE IN THIS SCENARIO: 
            |                                        | 
   LAN abc  |_________NIC 1--Server--NIC 2___________|   LAN abc 
            |                                        | 
            |                                        | 
Client 1--- |                                        |-----Client 2 
            |                                        | 
            |_____________Bridge_____________________| 
            |                                        | 
            |                                        | 