Brocade ADX - The Dynamic Weighted Predictor

The ADX provides a number of loadbalancing methods (also known as predictors) such as round robin and least connections.
Within this article we will look at the Dynamic Weighted loadbalancing method.


The Dynamic Weighted balancing method is a dynamic predictor that allows you to distribute traffic based upon the resource usage of your server (such as CPU or memory). This information is retrieved from the server via SNMP (Simple Network Management Protocol).
There are 2 configuration methods for the Dynamic Weighted predictor. They are direct and reverse.


Note : With both methods the higher the SNMP-weight value the more traffic that is sent to the server.

Direct -  The SNMP-weight is calculated directly using the SNMP response. i.e if the CPU idle value is polled, which returns 80%, then the SNMP-weight of the server is dynamically set to 80. Note : if the ADX is unable to poll the server then the SNMP-weight is set to 0. Because of this, a weight is set on the server of 100.
Reverse -The SNMP-weight is calculated by subtracting the max. based value from the SNMP response (max. based value – SNMP response = SNMP-weight value). The max value is set on each server. i.e if the CPU usage is polled, which returns 20% and the max weight is 100, then the SNMP-weight of the server is dynamically set to 80 (100 - 20 = 80).


The configuration steps below are for Dynamic Weighted Direct. As you can see the syntax is pretty straight forward.

server snmp-poll 5                              <-- poll every 5 minutes

server real
 weight 100
 port 80
 port 80 keepalive
 snmp-request community commstring port 161    <-- define a community string and which port to use.
 snmp-request oid 1   <-- define the oid that will be polled.

server real
 weight 100
 port 80
 port 80 keepalive
 snmp-request community commstring port 161
 snmp-request oid 1

server virtual VIP_192.168.1.100
 predictor dynamic-weighted direct oid 1      <-- set the predictor
 port 80
 bind 80 80
 bind 80 80

Note : If you place a . (dot) at the front of your OID the ADX will prepend a zero to the front when sending the SNMP poll (i.e .1.3.6. would be
This can lead to the server reporting a bad OID and in turn no value being returned.


From the ADX you can see the SNMP Weight of the server via a 'show server real'.

SSH@adx#sh server real
Real Servers Info
State(St) - ACT:active, ENB:enabled, FAL:failed, TST:test, DIS:disabled,
            UNK:unknown, UNB:unbind, AWU:await-unbind, AWD:await-delete

Name:   State: Active       Cost: 0  IP:   1
Mac: d4ae.13ab.4014          SNMP_Weight: 69/1              MaxConn: n/a
SrcNAT: not-cfg, not-op      DstNAT: not-cfg, not-op    Serv-Rsts: 0
Rx throughput: 0 Kbps    Tx throughput: 0 Kbps
tcp conn rate:udp conn rate = 0:0, max tcp conn rate:max udp conn rate = 62:0
BP max local conn configured No: 0 0 0 0 0 0
BP max conn percentage configured No: 0 0 0 0 0 0
Use local conn : No
SIP current TCP connections = 0

Port    St  Ms CurConn TotConn    Rx-pkts   Tx-pkts   Rx-octet   Tx-octet   Reas
----    --  -- ------- -------    -------   -------   --------   --------   ----
default UNB 0  0       0          0         0         0          0          0
http    ACT 0  0       167        8462      6583      5371671    964845     0

Server  Total  0       701        15881     14210     9853633    2215037    0

However if you need to troubleshoot SNMP it is recommended that you first of all ensure the port is listening on the server, if so then to run a packet capture either on the server of from the ADX (via a debug filter).

Tags: ADX

About the Author


R Donato

Rick Donato is the Founder and Chief Editor of He currently works as an SDN/NFV Solutions Architect and has a keen interest in automation and the cloud.

You can find Rick on Twitter @f3lix001