Dynamic Secure Control Traffic
Dynamic Secure Control Traffic (SCT) configuration is crucial in protecting the CPU from being overwhelmed by the traffic it must process. This mechanism limits the amount of traffic processed by the CPU by configuring limits on a per-group basis using packets-per-second (pps) values.
Initial SCT Values
An initial configuration is set by the driver upon initiation, but users can revise this configuration.
The initial SCT values for various traffic types are as follows:
Traffic Type | TC (Queue) | Rate (pps) |
---|---|---|
BGP | 7 | 1000 |
All-Routers MC (BGP) | 7 | 100 |
STP BPDU | 7 | 200 |
LACP | 7 | 200 |
VRRP | 7 | 200 |
OSPF | 7 | 1000 |
ISIS | 7 | 1000 |
LLDP | 6 | 200 |
802.1X PAE | 6 | 200 |
CDP | 6 | 200 |
SSH | 5 | 1000 |
Telnet | 5 | 200 |
DHCP BC | 4 | 100 |
ICMP | 4 | 100 |
ARP reply to me | 4 | 300 |
ARP BC | 4 | 100 |
IGMP | 4 | 400 |
IP to My address | 2 | 10000 |
IP BC | 2 | 100 |
IP route default | 1 | 400 |
All other | 0 | 100 |
ACL default trap | 0-7 | 4000 |
User Configuration
Users can configure rate limiting (pps) for specified packet types/groups through a set of temporary debugfs interfaces. These interfaces are located under the root of the debugfs mount point, within the prestera/sct/
subfolder.
Reading Configuration
To read the current SCT configuration, use the ls
command:
ls /sys/kernel/debug/prestera/sct/
This command will list the available SCT files:
all_unspecified_cpu_opcodes
sct_acl_trap_queue_4
sct_arp_to_me
sct_dhcp
sct_isis
sct_special_ip4_icmp_redirect
sct_stp
sct_acl_trap_queue_0
sct_acl_trap_queue_5 sct_bgp
sct_icmp
sct_lacp sct_special_ip4_mtu_exceed
sct_telnet
sct_acl_trap_queue_1
sct_acl_trap_queue_6
sct_bgp_all_routers_mc
sct_igmp
sct_lldp
sct_special_ip4_options_in_ip_hdr
sct_vrrp
sct_acl_trap_queue_2
sct_acl_trap_queue_7
sct_cdp
sct_ip_bc
sct_nat
sct_special_ip4_zero_ttl
sct_acl_trap_queue_3
sct_arp_intervention
sct_default_route
sct_ip_to_me
sct_ospf
sct_ssh
Writing Configuration
To set a custom rate for a specific group, use the echo
command. For example, to set the SCT rate for SSH traffic to 200 pps:
echo 200 > /sys/kernel/debug/prestera/sct/sct_ssh
To verify the new setting, use the cat
command:
cat /sys/kernel/debug/prestera/sct/sct_ssh
Output:
sct_ssh: 200 (pps)
Disabling SCT
To disable SCT for a specific group, set its value to 0
. This action automatically sets the value to 65535
(disabling the limit):
echo 0 > /sys/kernel/debug/prestera/sct/sct_ssh
To verify the setting, use the cat
command:
cat /sys/kernel/debug/prestera/sct/sct_ssh
Output:
sct_ssh: 65535 (pps)
Notes
- The maximum SCT value that can be set is
65K
pps. - Setting an SCT group limit value to zero effectively disables the limit by setting it to
65535
.
Verify Configuration
Let’s say you want to limit SSH traffic to different pps values and test it using iperf on the same machine:
Enable SCT for SSH:
echo <new_limit> > /sys/kernel/debug/prestera/sct/sct_ssh
Example:
# Limit SSH traffic to 200 pps
echo 200 > /sys/kernel/debug/prestera/sct/sct_ssh
Start iperf Server for SSH Traffic:
iperf -s -p 23
Start iperf Client:
iperf -c 127.0.0.1 -p 23
Output-
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 23
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[ 3] local 127.0.0.1 port 43796 connected with 127.0.0.1 port 23
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 11.7 GBytes 10.0 Gbits/sec
By following this approach, we can efficiently test a range of SCT limits for SSH traffic and provide valuable information on optimizing SCT configurations based on specific requirements and network environments.
Test Results:
Here’s a summary of the observed bandwidth for each SCT limit:
SCT Limit (pps) | Observed Bandwidth (Gbps) |
---|---|
100 | 9.94 |
200 | 10.5 |
300 | 10.7 |
400 | 10.8 |
500 | 10.0 |
600 | 10.3 |
700 | 9.83 |
800 | 10.4 |
900 | 11.0 |
1000 | 10.0 |
Analysis:
- Lower SCT limits (e.g., 100-500 pps) appear to have a minimal impact on bandwidth, with fluctuations within a relatively narrow range.
- Higher SCT limits (e.g., 600-900 pps) result in slightly higher bandwidth, peaking at around 11.0 Gbps at 900 pps.
- At the highest SCT limit tested (1000 pps), the observed bandwidth decreases slightly to 10.0 Gbps.
Based on the observed results, users can select SCT limits that strike a balance between traffic control and maximizing network throughput according to their specific requirements.