Skip to main content
Versa Networks

CSG5000 100Gbps Port Per-Tunnel and Pipe Level Shapers

Versa-logo-release-icon.pngFor supported software information, click here.

This feature is for use with the Versa CSG5000 gateway or similar high-end gateway appliances that employ multi-queue (RSS/TSS) pollers. This allows VLAN or per-tunnel (pipe) shaping to be enabled on 10 Gbps or 100 Gbps ports on these appliances. The support includes per-pipe level shaping rates and a pipe’s per-traffic classes, along with committed and peak rates, and round-robin scheduling of four queues for each traffic class. It also supports port-level shaping as well as port-level, per-traffic shaping and scheduling class (eight traffic classes or queues for port level) as for the existing shaping features for the CSG5000.

The port-level shaping continues to use hardware schedulers, whereas the pipe-level shaping is scheduled in software. Each pipe/tunnel is anchored on a single thread, so the aggregate rate for a single tunnel/pipe is limited by the shaping throughput of shaping on a single thread. The aggregate rate also depends on the number of tunnels/pipes that are anchored on the same poller thread. Example throughput numbers are given at the end of this document.
 
The following configurations use show and VTY commands to enable, observe, and use the pipe-level shapers on CSG5000 gateways. Most are existing commands and configurations:

  1. For configuring adaptive shaping on branches, see Configure CoS and Configure Adaptive Shaping.
  2. Configure a queue depth of [192 – 255] (WRED) for the non-real time traffic classes schedulers configured for the 100 Gbps ports.
org-services Tenant1 {
    class-of-service {
        …
        …
        drop-profiles {
            dp1 {
                minimum 192;
                maximum 255;
            }
        }
        schedulers {
            sched-AF {
              …
                drop-profile-map {
                    loss-priority low {
                        drop-profile dp1;
                    }
                    loss-priority high {
                        drop-profile dp1;
                    }
                }
            }
            sched-BE {
              …
                drop-profile-map {
                    loss-priority low {
                        drop-profile dp1;
                    }
                    loss-priority high {
                        drop-profile dp1;
                    }
                }
           }
  1.  Separating the set of 8-Rx and 8-Tx pollers for improving Tx-shaping performance is recommended. It is not necessary, but is recommended to improve the performance of the shapers:
admin@New-5000-CSG-cli(config)% show system service-options
poller-count 16;                                    >>>> Poller count 16
port-poller-map {                                   >>> For setting pollers for each port explicitly
    port vni-0/16 {
        poller-cpu-id [ 48 49 50 51 52 53 54 55 ];
    }
    port vni-0/18 {
        poller-cpu-id [ 48 49 50 51 52 53 54 55 ];
    }
}
 
tx-port-poller-map {                                >>> Separating Tx pollers for vni-0/16 to isolated one from Rx pollers and all other ports to pollers CPUs [56 – 63] 
    port vni-0/16 {                                 
        poller-cpu-id [ 56 57 58 59 60 61 62 63 ];
    }
    port vni-0/18 {
        poller-cpu-id [ 48 49 50 51 52 53 54 55 ];
    }
}
  1.  A configuration has been added to change a tunnel or pipe’s re-anchoring to a different poller:
    1. The load on pollers can be monitored with:
          vsm-vcsn0> show vsm load
    2. The poller index can be obtained by the vty command:
          vsm-vcsn0> show cos scheduler pipe-mapping vni-0/16
    3. Configure on the branch to which the tunnel is to be shaped, SD-WAN device site membership:
admin@New-1500-CSG-cli(config)% show | compare
orgs {
     org Tenant1 {
         sd-wan {
             site {
+                group-memberships [ sdwan-branch-grp1 ];
             }
         }
     }
}
  1.  Configure a policy to match the remote branch’s SD-WAN tunnel’s group membership for steering to a different poller.
admin@New-5000-CSG-cli(config)% show | compare
orgs {
     org Tenant10 {
         sd-wan {
             site {
                 wan-interfaces {
                     vni-0/16.1200 {
+                        shaper-policy shaper_pol;
                     }
                 }
+                path-policy shaper_pol {
+                    term t1 {
+                        match {
+                            remote-group-membership [ sdwan-branch-grp1 ];
+                            remote-site-type [ branch ];
+                        }
+                        action {
+                            shaper {
+                                poller-index 8;
+                            }
+                        }
+                    }
+                }
             }
         }
     }
}

CLI show Commands for Shaping 

  • To check for shaping results:
admin@New-5000-CSG-cli> show class-of-services interfaces extensive vni-0/16
  • To check for shaping accuracy/efficacy:
admin@New-5000-CSG-cli> show class-of-services interfaces extensive 16 | match "q0: fc_ef" | nomore
  q0:    fc_ef    1                  0             0           0                0              0      0            0           0
  q0:    fc_ef    1        24750-99000     644471800   107310586     433548912624    71961454884    255     96928592    15475776
  q0:    fc_ef    1    1500000-6000000     763352466         249    4425017389512         133490      0    976399360           0
  q0:    fc_ef    1    1500000-6000000    7636392065           0    4426780624814              0      1    974296992           0
  q0:    fc_ef    1    1500000-6000000    7633474270          44    4425091032164          27856      0    975612504           0
  q0:    fc_ef    1    1500000-6000000    7636140293         101     442663252938          55446      3    975399232           0
  q0:    fc_ef    1    1500000-6000000    9407948239    89717413    5453789429318    51971266282      0   1164299416           0
  q0:    fc_ef    1    1500000-6000000    7634549804         104    4425714565212          57128      1    973590664           0
  q0:    fc_ef    1      200000-800000    6100473837  3031081739    3537524195762  1755996021318    255    779209856   391953144
  q0:    fc_ef    1    1500000-6000000    9094455107     4276292    5272009945002     2479185952      0   1170227712           0
  q0:    fc_ef    1    1500000-6000000    9427754275   102542887    5465270740418    59400559886      2   1169789680           0
  q0:    fc_ef    1     250000-1000000    7625991932   1473164305   4421392369204   853343636486    253    974041080   196704240
  q0:    fc_ef    1    1500000-6000000    9486017317    51637754    5499046457006    29888967300      4   1168665400           0
  q0:    fc_ef    1    1500000-6000000    7606462600           3    4409440603028           1486      0    969242896           0
[ok][2025-01-29 09:05:23]

VTY Commands

$ vsh connect vsmd

To check CPU utilization or service load: 

vsm-vcsn0> show vsm load

Load info of 2011ms (sampled 1984ms ago): WT EWMA avg sampled over 1ms interval

           Svc   Svc   CPU
Thread    PID   Load   EWMA   Load
---------------------------------- 
WT-0    14685      2      0    100
WT-1    14686     98     97    100
WT-2    14687     62     61    100
…           
…            
…            
WT-46   14764     51     50    100
WT-Avg ------     55     ---   100
PT-0    14765     57     ---   100
PT-1    14766     57     ---   100
PT-2    14767     57     ---   100
PT-3    14768     57     ---   100
PT-4    14769     57     ---   100
PT-5    14770     56     ---   100
PT-6    14771     57     ---   100
PT-7    14792     57     ---   100
PT-8    14793     90     ---   100
PT-9    14794     99     ---   100
PT-10    14795    89     ---   100
PT-11    14796    80     ---   100
PT-12    14797    99     ---   100
PT-13    14798    87     ---   100
PT-14    14799    79     ---   100
PT-15    14800    99     ---   100

•    To check the tunnel/pipe to poller mapping:

vsm-vcsn0> show cos scheduler pipe-mapping vni-0/16
Interface name    : vni-0/16
Pipe ID poller IfIdx  AcktID  IsCFG  Description

0        65535     0       0    1    Default    ===> 65k is invalid poller index and shows pipes that are skipping pipe level shaping.
1            9     0       0    1    vni-0/16.10
2           10     0       0    1    vni-0/16.11
3           11     0       0    1    vni-0/16.12
4           12     0       0    1    vni-0/16.13
5           13     0       0    1    vni-0/16.14
6           14     0       0    1    vni-0/16.15
7           15     0       0    1    vni-0/16.16
8            9     0       0    1    vni-0/16.17
9            8     0       0    1    vni-0/16.18
10          11     0       0    1    vni-0/16.19
11          10     0       0    1    vni-0/16.2
12          13     0       0    1    vni-0/16.20
13          12     0       0    1    vni-0/16.21
14          15     0       0    1    vni-0/16.22
15          14     0       0    1    vni-0/16.23
16           8     0       0    1    vni-0/16.24
17           9     0       0    1    vni-0/16.25
18          10     0       0    1    vni-0/16.26
19          11     0       0    1    vni-0/16.27
20          12     0       0    1    vni-0/16.28
21          13     0       0    1    vni-0/16.29
22          14     0       0    1    vni-0/16.3
23          15     0       0    1    vni-0/16.30
24           9     0       0    1    vni-0/16.31
25           8     0       0    1    vni-0/16.32
26          11     0       0    1    vni-0/16.33
27          10     0       0    1    vni-0/16.34
28          13     0       0    1    vni-0/16.35
29          12     0       0    1    vni-0/16.36
30          15     0       0    1    vni-0/16.37
31          14     0       0    1    vni-0/16.38
32           8     0       0    1    vni-0/16.39
33           9     0       0    1    vni-0/16.4
34          10     0       0    1    vni-0/16.40
35          11     0       0    1    vni-0/16.41
36          12     0       0    1    vni-0/16.5
37          13     0       0    1    vni-0/16.6
38          14     0       0    1    vni-0/16.7
39          15     0       0    1    vni-0/16.8
40           9     0       0    1    vni-0/16.9
41           8  1308      34    0    WAN-105:34:10:clear
42          11  1309      34    0    WAN-105:34:10:secure
43          10  1312      34    0    WAN-105:34:14:clear
44          13  1313      34    0    WAN-105:34:14:secure
45          12  1396      34    0    WAN-105:34:4:clear
46          15  1397      34    0    WAN-105:34:4:secure
47          14  1320      34    0    WAN-105:34:8:clear
48           8  1321      34    0    WAN-105:34:8:secure
49           9  1326      34    0    WAN-105:34:15:clear
50          10  1327      34    0    WAN-105:34:15:secure
51          11  1392      34    0    WAN-105:34:17:clear
52          12  1393      34    0    WAN-105:34:17:secure
53          13  1332      34    0    WAN-105:34:21:clear
54          14  1333      34    0    WAN-105:34:21:secure
55          15  1336      34    0    WAN-105:34:19:clear
56           9  1337      34    0    WAN-105:34:19:secure
57           8  1340      34    0    WAN-105:34:16:clear
58          11  1341      34    0    WAN-105:34:16:secure
59          10  1344      34    0    WAN-105:34:18:clear
60          13  1345      34    0    WAN-105:34:18:secure
61          12  1398      34    0    WAN-105:34:3:clear
62          15  1399      34    0    WAN-105:34:3:secure
63          14  1354      34    0    WAN-105:34:13:clear
64           8  1355      34    0    WAN-105:34:13:secure
65           9  1358      34    0    WAN-105:34:12:clear
66          10  1359      34    0    WAN-105:34:12:secure
67          11  1360      34    0    WAN-105:34:11:clear
68          12  1361      34    0    WAN-105:34:11:secure
69          13  1364      34    0    WAN-105:34:7:clear
70          14  1365      34    0    WAN-105:34:7:secure
71          15  1370      34    0    WAN-105:34:5:clear
72           9  1371      34    0    WAN-105:34:5:secure
73           8  1374      34    0    WAN-105:34:9:clear
74          11  1375      34    0    WAN-105:34:9:secure
75          10  1376      34    0    WAN-105:34:6:clear
76          13  1377      34    0    WAN-105:34:6:secure
77          12  1382      34    0    WAN-105:34:1:clear
78          15  1383      34    0    WAN-105:34:1:secure
79          14  1386      34    0    WAN-105:34:2:clear
80           8  1387      34    0    WAN-105:34:2:secure

65k is an invalid poller index and shows pipes that are skipping pipe-level shaping. Traffic for these pipes will be directly enqueued to hardware queues and are not anchored. All pollers can transmit packets for these pipes. The vni-0/16.0 is the default VLAN which will not be shaped for pipes (skips pipe shaping) and is directly enqueued to hardware queues.

To see the per-poller hardware queue statistics:

vsm-vcsn0> show vsm statistics hw-cos detail vni-0/16
HW-COS TX queue stats for port : 1 [vni-0/16]

|  PID    | TC | tx-pkts        | tx-dropped    | tx-bytes            | Qid |
-----------------------------------------------------------------------------
|    8    | TC0 | 195133        | 0             | 34955874            | 0   |
|         | TC1 | 0             | 0             | 0                   | 0   |        
|         | TC2 | 28713276799   | 0             | 16808087979858      | 1   |
|         | TC3 | 0             | 0             | 0                   | 1   |
|         | TC4 | 0             | 0             | 0                   | 2   |
|         | TC5 | 0             | 0             | 0                   | 2   |
|         | TC6 | 0             | 0             | 0                   | 3   |
|         | TC7 | 0             | 0             | 0                   | 3   |
| 221433 pkts skipped pipe shaping for poller idx 8    >>>Number of pkts that were directly queued to hardware queue 
                                                       >>>without going to pipe level shaping queue.
-----------------------------------------------------------------------------
|    9    | TC0 | 64986         | 0              | 13435196            | 4  |
|         | TC1 | 0             | 0              | 0                   | 4  | 
|         | TC2 | 37707261578   | 0              | 21967433587764      | 5  |
|         | TC3 | 0             | 0              | 0                   | 5  |        
|         | TC4 | 0             | 0              | 0                   | 6  |        
|         | TC5 | 0             | 0              | 0                   | 6  |        
|         | TC6 | 0             | 0              | 0                   | 7  |        
|         | TC7 | 0             | 0              | 0                   | 7  |        
| 90147 pkts skipped pipe shaping for poller idx 9
-----------------------------------------------------------------------------
|   10    | TC0 | 64986         | 0              | 13419516            | 8    |
|         | TC1 | 0             | 0              | 0                   | 8            
|         | TC2 | 36238651269   | 0              | 21116831908338      | 9  |
|         | TC3 | 0             | 0              | 0                   | 9  |
|         | TC4 | 0             | 0              | 0                   | 10 |
|         | TC5 | 0             | 0              | 0                   | 10 |
|         | TC6 | 0             | 0              | 0                   | 11 |
|         | TC7 | 0             | 0              | 0                   | 11 |
| 68787 pkts skipped pipe shaping for poller idx 10
-----------------------------------------------------------------------------
|   11    | TC0 | 97429         | 0              | 20109314            | 12 |
|         | TC1 | 0             | 0              | 0                   | 12 |    
|         | TC2 | 34110709926   | 0              | 19936965137332      | 13 |
|         | TC3 | 0             | 0              | 0                   | 13 |
|         | TC4 | 0             | 0              | 0                   | 14 |
|         | TC5 | 0             | 0              | 0                   | 14 |
|         | TC6 | 0             | 0              | 0                   | 15 |
|         | TC7 | 0             | 0              | 0                   | 15 |
| 73912 pkts skipped pipe shaping for poller idx 11
-----------------------------------------------------------------------------
|   12    | TC0 | 66121         | 0              | 13636539            | 16 |
|         | TC1 | 0             | 0              | 0                   | 16 |    
|         | TC2 | 36239159180   | 0              | 21116935038992      | 17 |
|         | TC3 | 0             | 0              | 0                   | 17 |    
|         | TC4 | 0             | 0              | 0                   | 18 |    
|         | TC5 | 0             | 0              | 0                   | 18 |    
|         | TC6 | 0             | 0              | 0                   | 19 |    
|         | TC7 | 0             | 0              | 0                   | 19 |    
| 72644 pkts skipped pipe shaping for poller idx 12
-----------------------------------------------------------------------------
|   13    | TC0 | 97414         | 0              | 20100600            | 20 |
|         | TC1 | 0             | 0              | 0                   | 20 |
|         | TC2 | 33418844999   | 0              | 19536175558966      | 21 |  
|         | TC3 | 0             | 0              | 0                   | 21 |
|         | TC4 | 0             | 0              | 0                   | 22 |
|         | TC5 | 0             | 0              | 0                   | 22 |
|         | TC6 | 0             | 0              | 0                   | 23 |
|         | TC7 | 0             | 0              | 0                   | 23 | 
| 75374 pkts skipped pipe shaping for poller idx 13
-----------------------------------------------------------------------------
|  14     | TC0 | 65025         | 0              | 13504254            | 24 |
|         | TC1 | 0             | 0              | 0                   | 24    
|         | TC2 | 36228751914   | 0              | 21110706721924      | 25 |
          | TC3 | 0             | 0              | 0                   | 25 |
|         | TC4 | 0             | 0              | 0                   | 26 |
|         | TC5 | 0             | 0              | 0                   | 26 |
|         | TC6 | 0             | 0              | 0                   | 27 |
|         | TC7 | 0             | 0              | 0                   | 27 |
| 80863 pkts skipped pipe shaping for poller idx 14
-----------------------------------------------------------------------------
|  15     | TC0 | 772631        | 0              | 474236742           | 28 |
|         | TC1 | 0             | 0              | 0                   | 28 |    
|         | TC2 | 36821399184   | 0              | 21506562732292      | 29 |
|         | TC3 | 0             | 0              | 0                   | 29 |
|         | TC4 | 0             | 0              | 0                   | 30 |
|         | TC5 | 0             | 0              | 0                   | 30 |
|         | TC6 | 0             | 0              | 0                   | 31 |
|         | TC7 | 0             | 0              | 0                   | 31 |
| 86503 pkts skipped pipe shaping for poller idx 15
-----------------------------------------------------------------------------
| Total   | TC0 | 1423725       | 0              | 603398035           |
|         | TC1 | 0             | 0              | 0                   |
|         | TC2 | 279478059328  | 0              | 163099701282670     |
|         | TC3 | 0             | 0              | 0                   |
|         | TC4 | 0             | 0              | 0                   |
|         | TC5 | 0             | 0              | 0                   |
|         | TC6 | 0             | 0              | 0                   |
|         | TC7 | 0             | 0              | 0                   |

Limitations and Known Issues

  1. A maximum of eight Tx polling threads can be employed for shaping due to existing NIC firmware and ICE driver limitations.
  2. The IFD/port-level shaping uses a different hardware level scheduler, whereas the tunnel/pipe-level uses a different one in software. Due to this, the port scheduler does not account for pipe’s traffic class level CIR guarantees in some cases if the port’s shaping rate is reduced to a value lower than the default rate (for example, 100Gbps->40Ggbps). To avoid this drawback, the configuration of any committed rates for the pipes (for example, VLANs) should be such that: SUM{CIR of all pipes}  < =  port’s shaping rate.
  3. The CLI configuration to re-anchor the tunnel to a different poller is not correctly applied after a service restart. Hence, this configuration will need to be deleted and reapplied after service restart.
  4. The current (older) version of the Versa Director user interface does not support tunnel re-anchoring; it is only supported via CLI.
    1. Due to this limitation, the configuration sync back from the gateway (CSG5k) in which shapers for 100Gbps are enabled (and if tunnel re-anchoring is configured) will fail. To work around this, the CLI configuration for re-anchoring on the gateway should be deleted before re-syncing the configuration from the gateway to the Versa Director, and after this the configuration can be added back.

Sample Profiling for Accuracy and Performance

  • 8 Rx and 8 Tx poller CPUs separated for a single 100 Gbps interface
  • Hypermode enabled
  • 60K sessions well distributed to all WTs
  • Average packet size: 579 Bytes
  • 20 SD-WAN tunnels, each shaped to 99 Mbps 
  • Single traffic class for each pipe and [ 255 – 192 ] queue depth for all queues
  • Total traffic sent to the tunnels—8.5 Gbps with the following distribution: 
    • 10 tunnels sent 100 Mbps
    • 5 tunnels sent 500 Mbps
    • 5 tunnels sent 1 Gbps

Profiling using VLAN pipe traffic, for loading, along with the above tunnel traffic for the following cases with all pipes accurately shaped as per their shaper profiles. The offered and egress rates are measured at the Spirent. The tunnel egress rates are lower due to tunnel overheads being included at shapers on the WAN interface:

  1. 60 pipes: Total offered rate of 48.5 Gbps, egress shaped rate of 40.1Gbps.
    • 40 VLANs: offered rate 40 Gbps. 38.4 Gbps egress shaped rate
    • 20 tunnels: offered rate 8.5 Gbps. 1.7 Gbps egress shaped rate
  2. 40 pipes: Total offered rate of 40 Gbps, egress shaped rate of 27 Gbps.
    • 20 VLANs: offered rate 31.5 Gbps. 25.3 Gbps egress shaped rate
    • 20 tunnels: offered rate 8.5 Gbps. 1.7 Gbps egress shaped rate
  3. 28 pipes: Total offered rate of 41 Gbps, egress shaped rate of 30 Gbps.
    • 8 VLANs: offered rate 32.5Gbps. 28.3 Gbps egress shaped rate
    • 20 tunnels: offered rate 8.5 Gbps. 1.7 Gbps egress shaped rate
       

CSG5000-shaper-rotated-cropped.png

Supported Software Information 

Releases 22.1.4 (Service Release dated 2025-08-18) and later support all content described in this article.

  • Was this article helpful?