Differences
This shows you the differences between two versions of the page.
en:dpi:faq:fastdpi:administrator:start [2024/07/29 15:10] – created elena.krasnobryzh | en:dpi:faq:fastdpi:administrator:start [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Administration Questions ====== | ||
- | {{indexmenu_n> | ||
- | < | ||
- | < | ||
- | By using the command <code bash> | ||
- | </ | ||
- | |||
- | < | ||
- | By using the command <code bash> | ||
- | </ | ||
- | |||
- | < | ||
- | Example of rolling back from version 2.7 to 2.6: <code bash>yum downgrade fastdpi-2.6</ | ||
- | </ | ||
- | |||
- | < | ||
- | The error occurs due to the absence of DSCP by autonomous systems. It can be ignored. | ||
- | </ | ||
- | |||
- | < | ||
- | '' | ||
- | The settings are similar to those recommended for nginx and should be added to the ''/ | ||
- | <code bash> | ||
- | # OS network stack optimization | ||
- | net.core.netdev_max_backlog=10000 | ||
- | net.core.somaxconn=262144 | ||
- | net.ipv4.tcp_syncookies=1 | ||
- | net.ipv4.tcp_max_syn_backlog = 262144 | ||
- | net.ipv4.tcp_max_tw_buckets = 720000 | ||
- | net.ipv4.tcp_tw_recycle = 1 | ||
- | net.ipv4.tcp_timestamps = 1 | ||
- | net.ipv4.tcp_tw_reuse = 1 | ||
- | net.ipv4.tcp_fin_timeout = 30 | ||
- | net.ipv4.tcp_keepalive_time = 1800 | ||
- | net.ipv4.tcp_keepalive_probes = 7 | ||
- | net.ipv4.tcp_keepalive_intvl = 30 | ||
- | net.core.wmem_max = 33554432 | ||
- | net.core.rmem_max = 33554432 | ||
- | net.core.rmem_default = 8388608 | ||
- | net.core.wmem_default = 4194394 | ||
- | net.ipv4.tcp_rmem = 4096 8388608 16777216 | ||
- | net.ipv4.tcp_wmem = 4096 4194394 16777216 | ||
- | </ | ||
- | for a 1 Gbps interface: <code bash> | ||
- | for a 10 Gbps interface: <code bash> | ||
- | |||
- | To apply the changes without rebooting, you can change them on the fly by using the command <code bash> | ||
- | For example: <code bash> | ||
- | This should resolve the issue. | ||
- | |||
- | **For CentOS 7**\\ | ||
- | Example: | ||
- | <code bash> | ||
- | # OS network stack optimization | ||
- | net.core.netdev_max_backlog=65536 | ||
- | net.core.optmem_max=25165824 | ||
- | net.core.somaxconn=1024 | ||
- | net.ipv4.tcp_max_orphans = 60000 | ||
- | net.ipv4.tcp_no_metrics_save = 1 | ||
- | net.ipv4.tcp_window_scaling = 1 | ||
- | net.ipv4.tcp_timestamps = 1 | ||
- | net.ipv4.tcp_sack = 1 | ||
- | net.ipv4.tcp_syncookies=1 | ||
- | net.ipv4.tcp_max_syn_backlog = 262144 | ||
- | net.ipv4.tcp_max_tw_buckets = 720000 | ||
- | net.ipv4.tcp_tw_recycle = 1 | ||
- | net.ipv4.tcp_timestamps = 1 | ||
- | net.ipv4.tcp_tw_reuse = 1 | ||
- | net.ipv4.tcp_fin_timeout = 30 | ||
- | net.ipv4.tcp_keepalive_time = 1800 | ||
- | net.ipv4.tcp_keepalive_probes = 7 | ||
- | net.ipv4.tcp_keepalive_intvl = 30 | ||
- | net.core.wmem_max = 33554432 | ||
- | net.core.rmem_max = 33554432 | ||
- | net.core.rmem_default = 8388608 | ||
- | net.core.wmem_default = 4194394 | ||
- | net.ipv4.tcp_rmem = 4096 8388608 16777216 | ||
- | net.ipv4.tcp_wmem = 4096 4194394 16777216 | ||
- | </ | ||
- | Update command: <code bash> | ||
- | [[https:// | ||
- | |||
- | [[http:// | ||
- | </ | ||
- | |||
- | < | ||
- | To view CPU load by cores in the '' | ||
- | To view load by DPI tasks, use the command: <code bash>ps -p `pidof fastdpi` H -o %cpu, | ||
- | **Example** output: | ||
- | <code bash> | ||
- | | ||
- | | ||
- | | ||
- | 35.8 23148 41 0 fastdpi_ajb | ||
- | 32.7 23152 41 1 fastdpi_rx_1 | ||
- | 34.1 23165 41 2 fastdpi_wrk0 | ||
- | 34.1 23170 41 3 fastdpi_wrk1</ | ||
- | In DPI, the COMMAND tasks are functionally separated by cores (PSR) to avoid interfering with each other' | ||
- | - '' | ||
- | - '' | ||
- | - other threads perform application and auxiliary tasks (generating Netflow, receiving control commands, loading lists, writing PCAP, etc.) and can create peak loads on the CPU, so they are assigned to a separate core. | ||
- | </ | ||
- | |||
- | < | ||
- | In DPI, everything is pre-allocated, | ||
- | **For example,** to increase to 500000 subscribers, | ||
- | <code bash> | ||
- | After changing the parameter, a restart is required: <code bash> | ||
- | </ | ||
- | |||
- | < | ||
- | <code bash> | ||
- | cp / | ||
- | cp /etc/dpi / | ||
- | mdb_copy /var/db/dpi / | ||
- | </ | ||
- | With '' | ||
- | </ | ||
- | |||
- | < | ||
- | Run the command | ||
- | <code bash> | ||
- | To ensure the setting is not lost after a server reboot, add this command to ''/ | ||
- | </ | ||
- | |||
- | < | ||
- | DPI performs self-diagnostics during operation, and if one of the working threads hangs and can no longer process traffic, DPI detects this state and restarts with core generation on Abort signal. | ||
- | <note important> | ||
- | |||
- | The problem occurs only on certain servers. If your server is affected, we recommend changing the standard disk scheduler to deadline: | ||
- | <code bash> | ||
- | echo deadline > / | ||
- | </ | ||
- | |||
- | < | ||
- | |||
- | . Why does the memory consumption of the process increase during operation?"> | ||
- | DPI allocates memory statically: at process start and when creating certain service profiles (such as NAT, black and white lists). During operation, additional memory is not allocated. So why does consumption increase?\\ | ||
- | Linux distinguishes between resident (RES in top) and virtual (VIRT in top) process memory. The peculiarity is that while memory is uninitialized (actually initialized to zero), Linux does not record it as resident and moves it there as it is initialized.\\ | ||
- | Setting '' | ||
- | </ | ||
- | |||
- | < | ||
- | <code bash> | ||
- | 166206 ? Z 0:00 \_ [wd_fastdpi.sh] < | ||
- | 166219 ? Z 0:00 \_ [wd_fastpcrf.sh] < | ||
- | </ | ||
- | Simply restart the watchdog: <code bash> service watchdog restart</ | ||
- | </ | ||
- | |||
- | < | ||
- | In case of protocol or signature detection issues, perform three tests on each of the following devices: | ||
- | * Personal computer | ||
- | * Smartphone on iOS | ||
- | * Smartphone on Android | ||
- | |||
- | The following recommendations help eliminate unnecessary traffic: | ||
- | * It is recommended to conduct the test on a PC in incognito mode. | ||
- | * When testing on a smartphone, enable power-saving mode. | ||
- | |||
- | Test execution: | ||
- | - Check if the following parameters are enabled in the ''/ | ||
- | ajb_save_ip=“subscriber' | ||
- | plc_trace_ip=“subscriber' | ||
- | </ | ||
- | - Execute the command <code bash> | ||
- | - Delete all files from ''/ | ||
- | - Open the ''/ | ||
- | ajb_save_ip=“subscriber' | ||
- | plc_trace_ip=“subscriber' | ||
- | </ | ||
- | - Prepare the test subscriber for launch to generate problematic traffic. | ||
- | - Perform '' | ||
- | - Start generating traffic. Record traffic for 1 minute. | ||
- | - Open the '' | ||
- | ajb_save_ip=“subscriber' | ||
- | plc_trace_ip=“subscriber' | ||
- | </ | ||
- | - Perform '' | ||
- | - Prepare the output of the following commands into files: <code bash> | ||
- | “dscp2lst / | ||
- | “fdpi_ctrl list --policing --ip “subscriber' | ||
- | “dscp2as / | ||
- | </ | ||
- | - Prepare an archive with the files from point 10 and the '' | ||
- | - Repeat the required number of tests with different devices. Indicate in the archive name or in a '' | ||
- | - Attach the archives to the ticket. If the archives are too large, upload them to any cloud file sharing service and send us the link. | ||
- | </ | ||
- | </ |