When customers configure rate limit in the business policy, they can only choose the percentage(%) of the link bandwidth which is confusing. Usually customer's requirement is to limit the thoughput to a specific value such as 25Mbps. Rate limit is a complex QoS behavior which involves math calculation. This article introduces the math calculation of rate limit.
VMware VeloCloud SD-WAN supported versions
1. First, rate limit is a per-pair behavior. For example, a flow is generated at edge B1 and destination edge is edge B3. If customer wants to apply rate limit on this flow, they must configure the business policy in edge B1.
2. Customers need to calculate the overall TX and RX bandwidth of edge B1 and edge B3, respectively. Consider below WAN situations:
B1:
B3:
B1 and B3 establish full mesh tunnel:
Interface VLAN prio8021P PeerName PublicIpAddr PeerIpAddr TunnelingMode Version Path State RxState TxState AvgLatencyRx AvgLatencyTx RxJitter TxJitter lossRx lossTx MeasuredRateRx MeasuredRateTx dynamicBwRx dynamicBwTx RemoteRx HeartbeatIntervalMs MTU Dynamic Dir Overhead DynAbort LocalGateway
GE6 NONE NONE b3-edge1 172.16.1.10 172.16.3.2 DEFAULT 44269963 ACTIVE STABLE STABLE 0 0 0.0 0.0 0.0 0.0 20000 20000 20000 20000 20000 100 1500 No OUT 0 1 0
GE3 NONE NONE b3-edge1 169.254.7.10 169.254.9.2 DEFAULT 46499253 ACTIVE STABLE STABLE 0 0 0.0 0.0 0.0 0.0 50000 50000 150000 50000 150000 100 1500 No OUT 0 1 0
GE4 NONE NONE b3-edge1 169.254.6.34 169.254.9.2 DEFAULT 41612284 ACTIVE STABLE STABLE 0 0 0.0 0.0 0.0 0.0 50000 50000 150000 50000 150000 100 1500 No OUT 0 1
So the overall TX bandwidth of B1 is 50+50+20=120Mbps, overall RX bandwidth of B1 is also 50+50+20=120Mbps. Similarly, overall TX bandwidth of B3 is 170Mbps, overall RX bandwidth is also 170Mbps. Now compare the overall TX bandwidth of B1 and overall RX bandwidth of B3, obtain the lesser of the two numbers which is 120Mbps, this value times 95% is the BW Cap from B1 towards B3, denote as BWC1→3. In a similar way, compare the overall RX bandwidth of B1 and overall TX bandwidth of B3, whichever lower times 95% is the BW cap from B3 towards B1, denote as BWC3→1.
Customer can verify the edge-to-edge BW Cap by command debug.py --qos_net <peer id> <segid> stats. In above case, BWC1→3 is 120*95%=114Mbps.
edge:B1-edge1(active):~# debug.py --qos_net 21b655c5-27ab-46e5-be9d-5ed5f4fed306 0 stats <-------21b655c5-27ab-46e5-be9d-5ed5f4fed306 is logID of B3.
Endpoint/Class BW Cap (Kbps) Weight Kbps (10s win) PPS (10s win) Queued pkts Queued bytes Dropped pkts Dropped bytes
DeviceCap 114000 100.00 34 48 0 0 0 0
b3-edge1 114000 100.00 12 24 0 0 0 0
Control 0 100.00 12 24 0 0 0 0
Segment-0 0 100.00 0 0 0 0 0 0
Real/High 114000 35.00 0 0 0 0 0 0
Real/Norm 114000 15.00 0 0 0 0 0 0
Real/Low 114000 1.00 0 0 0 0 0 0
Tran/High 114000 20.00 0 0 0 0 0 0
Tran/Norm 114000 7.00 0 0 0 0 0 0
Tran/Low 114000 1.00 0 0 0 0 0 0
Bulk/High 114000 15.00 0 0 0 0 0 0
Bulk/Norm 114000 5.00 0 0 0 0 0 0
Bulk/Low 114000 1.00 0 0 0 0 0 0
BWC3→1 is also 120*95%=114Mbps:
edge:B3-edge1(active):~# debug.py --qos_net 19a2b706-30bc-4484-b692-a839c3e7ba90 0 stats <-------19a2b706-30bc-4484-b692-a839c3e7ba90 is logID of B1.
Endpoint/Class BW Cap (Kbps) Weight Kbps (10s win) PPS (10s win) Queued pkts Queued bytes Dropped pkts Dropped bytes
DeviceCap 161500 100.00 32 48 0 0 0 0
b1-edge1 114000 100.00 19 31 0 0 0 0
Control 0 100.00 19 31 0 0 0 0
Segment-0 0 100.00 0 0 0 0 0 0
Real/High 114000 35.00 0 0 0 0 0 0
Real/Norm 114000 15.00 0 0 0 0 0 0
Real/Low 114000 1.00 0 0 0 0 0 0
Tran/High 114000 20.00 0 0 0 0 0 0
Tran/Norm 114000 7.00 0 0 0 0 0 0
Tran/Low 114000 1.00 0 0 0 0 0 0
Bulk/High 114000 15.00 0 0 0 0 0 0
Bulk/Norm 114000 5.00 0 0 0 0 0 0
Bulk/Low 114000 1.00 0 0 0 0 0 0
When the calculated BW cap does not match the value in the debug.py --qos_net <peer id> <segid> command, customer needs to investigate further.
3. Upon confirm the BWC1→3 and BWC3→1, customer can calculate the final rate-limited throughput.
Limited TX throughput=TX_RL_percentage(%)*BWC1→3
Limited RX throughput=RX_RL_percentage(%)*BWC3→1
For example, if customer wants to limit the RX file transfer speed to 10Mbps, in above case, (10Mbps/BWC3→1)*100%=(10Mbps/114Mbps)*100%=8.8%≈9%. Customer may need to configure the business policy as below:
Please note limited throughput 10Mbps is the physical layer throughput instead of application layer throughput, customer may observe lower throughput value in file transfer software.
SD-WAN edge name must not contain special characters or Chinese characters , otherwise debug.py --qos_net command throws error.