Возможности протоколирования и отладки на С-Терра Шлюз DP
Возможности протоколирования и отладки на С-Терра Шлюз DP
Только для исполнений «С-Терра Шлюз DP ST KC1», «С-Терра Шлюз DP ST KC2», «С-Терра Шлюз DP ST KC3»
На данных исполнений для просмотра статистических данных интерфейсов возможно использование скрипта dpdk-telemetry.py.
Для получения диагностической информации, статистических данных и сообщений об ошибках рекомендуется выполнить следующие действия:
- вручную запустить перехватчик ipsm-app из консоли вместо запуска службы /etc/init.d/ipsmapp:
/opt/VPNagent/bin/ipsm-app –f
- При этом в консоль будут выводиться диагностические сообщения подсистем DPDK, а также, в зависимости от настроек, статистика по количеству пакетов и их дамп в шестнадцатеричном виде;
- просмотреть файл статистики, указанный в параметре stats_file файла ipsm_dpdk.cfg.
- Содержимое имеет вид:
Wed 12 Jul 2017 17:28:10 +0300
port: 0 name: 86:00.0 mtu: 9700 link speed: 10000Mbps full-duplex autonegotiation link up
port: 0 sent: 0 / 0 , sent_total: 0 / 0
port: 0 recv: 0 / 0 , recv_total: 0 / 0
port: 0 drop: 0, drop_total: 0
port: 0 rate (Mbps): 0 in 0 out
port: 0 sendq: 0, sq_ovf_cnt: 0
port: 0 ipkts: 0, opkts: 0
port: 0 ipktst: 0, opktst: 27
port: 0
port: 0
port: 0
port: 0
port: 1 name: 85:00.0 mtu: 9600 link speed: 10000Mbps full-duplex autonegotiation link up
port: 1 sent: 0 / 0 , sent_total: 0 / 0
port: 1 recv: 23508 / 12036096, recv_total: 3627936 / 1857503232
port: 1 drop: 23520, drop_total: 3627696
port: 1 rate (Mbps): 91 in 0 out
port: 1 sendq: 0, sq_ovf_cnt: 0
port: 1 ipkts: 23520, opkts: 0
port: 1 ipktst: 3627936, opktst: 0
port: 1
port: 1
port: 1 d8 23520
port: 1 d8t 3627696
- Информация обновляется раз в секунду.
- По каждому порту отдельно представляется следующая статистика:
- sent – пакетов/байтов отправлено за секунду, sent_total – пакетов/байтов отправлено всего с момента запуска;
- recv – пакетов/байтов получено за секунду, recv_total – пакетов/байтов получено всего с момента запуска;
- drop – отброшено пакетов за секунду, drop_total – отброшено пакетов всего с момента запуска;
- rate – текущая скорость приема и отправки трафика на данном порту в мегабитах в секунду;
- sendq – текущая длина очереди исправления пересортировки пакетов (sendqueue);
- sq_ovf_cnt – количество переполнений очереди исправления пересортировки пакетов (sendqueue);
- free_pool – количество свободных буферов на данном порту (в DPDK) под пакеты;
- ipkts/opkts – количество принятых/отправленных пакетов за секунду (из статистики сетевой карты);
- ipktst/opktst – количество принятых/отправленных пакетов всего с момента запуска (из статистики сетевой карты).
- Статистика по типам ошибок (получаемая от сетевой карты). С окончанием “t” – всего с момента запуска, иначе за секунду. Статистика об ошибках выводится только при их наличии:
- imiss – входящие пакеты, отброшенные из-за переполнения очереди сетевой карты (FIFO);
- ierr – всего ошибок на входящих пакетах;
- oerr – всего исходящих пакетов, отброшенных из-за ошибок на передаче;
- imbuf – входящие пакеты, отброшенные из-за ошибок в выделении памяти.
- Статистика по дополнительной информации об ошибках во входящих пакетах (например, ошибка в контрольной сумме ip либо tcp) либо ошибках при их приёме. Эти ошибки учитываются в счётчике ierr/ierrt, но не обязательно приводят к уничтожению пакета. Например, пакет успешно принимается сетевой картой при ошибке в контрольной сумме 3-4 уровней. Отображается только при наличии таких ошибок и включенной опции hw_ip_checksum. Значения с окончанием “t” – всего с момента запуска. Иначе – за секунду.
- e0 – неправильная контрольная сумма протокола 4 уровня (TCP);
- e1 – неправильная контрольная сумма IP-заголовка;
- e2 – неправильная контрольная сумма внешнего IP-заголовка.
- Строка, содержащая вывод вида “d8 3 d8t 70” – статистика по отбрасыванию пакетов. Значения с окончанием “t” – всего с момента запуска. Иначе – за секунду. Значения выводятся только для ненулевых счётчиков.
- d1 – пакеты, отброшенные при ошибках на отправке в сеть (параметр tx_retries). Обычно появляются при приближении к теоретическому пределу пропускной способности сети для данного размера пакетов. Либо при попытке отправить слишком большое количество пакетов подряд (параметр sendq_burst_threshold);
- d2 – входящие пакеты, отброшенные при невозможности передать их на обработку. Появляются при загруженности обрабатывающих потоков (упёрлись в максимальную производительность по шифрованию/фильтрации);
- d3 – пакеты, отброшенные. если данный интерфейс имеет состояние (pa_state), отличное от PCAP_PASS (состояние по умолчанию для uncontrolled-интерфейсов) и PCAP_PROCESS (состояние controlled-интерфейсов). Состояние интерфейса устанавливается платформа-независимой частью в зависимости от того, загружена LSP или DDP;
- d4 – ошибка при получении входящего пакета от DPDK. Это возможно при серьёзной вычислительной перегрузке и нехватке ресурсов;
- d5 – пакеты, отброшенные при неудаче отправки внутрь tcp/ip стека ОС на интерфейс vEth<N>;
- d6 – пакеты, отброшенные из-за ошибок в работе с памятью, при подготовке к передаче пакетов в платформа-независимую часть;
- d7 – пакеты, отброшенные при удалении платформа-независимой частью структуры packet_data_t;
- d8 – пакеты, отброшенные платформа-независимой частью. Должны, в основном, быть заметны как DROP в klogview (см. «Специализированные команды»);
- d9 – фреймы, отброшенные при получении из сети или стека ОС, имеющие значение поля ethertype, отличное от IPv4 (0x0800), IPv6 (0x86DD), ARP (0x0806) и не указанное в параметре allowed_ethertypes;
- d10 – фреймы, отброшенные при получении с виртуального интерфейса vEthN, если ему соответствует порт LAN;
- d11 – фреймы, полученные на порту WAN либо полученные из стека ОС на виртуальный интерфейс vEthN, отброшенные механизмом фильтрации по vlan id;
- d12 – не-etherip фреймы, а также etherip-фреймы, не соответствующие rfc на протокол etherip, прошедшие фильтрацию в платформа-независимой части, и предназначенные для отправки в порт, находящийся в L2-режиме.
- Информация о текущем статусе порта, включающая mtu, link, link speed, duplex state, autonegotiation state, отображается однократно при отправке в ipsm-app сигнала SIGUSR2:
pkill -SIGUSR2 ipsm-app
port: 1 name: 85:00.0 mtu: 9600 link speed: 10000Mbps full-duplex autonegotiation link up
- Вся статистика может быть сброшена отправкой в ipsm-app сигнала SIGUSR1:
pkill -SIGUSR1 ipsm-app
- Просмотреть файл дампа кадров ethernet, указанного в параметре frames_file файла ipsm_dpdk.cfg.
- Содержимое имеет вид:
22-12-16 19:29:55.922 p1 in [126] 90e2ba4c0271 a8f94bf7d6bb 0800
45040070fd8a40003f119d31c0a81037c0a80f35 01f401f4005c2d7a
22-12-16 19:29:55.922 p1 out* [126] 90e2ba4c0271 a8f94bf7d6bb 0800
45040070fd8a40003f119d31c0a81037c0a80f35 01f401f4005c2d7a
22-12-16 19:29:55.971 p1 in [142] 90e2ba4c0271 a8f94bf7d6bb 0800
4500008000144000fe32db7ac0a81037c0a80f35 e8cd0a4a00000003
22-12-16 19:29:55.972 p0 out [60] ffffffffffff 000c2922b756 0806
0001080006040001000c2922b756aca4de8b000000000000aca4de89
22-12-16 19:29:55.972 p0 in [60] 000c2922b756 000c293fd99f 0806
0001080006040002000c293fd99faca4de89000c2922b756aca4de8b
- p<N> – номер порта, на котором получен дамп кадра ethernet.
- [NN] - длина кадра ethernet, вместе с заголовком.
- Для улучшения восприятия пробелами отделены MAC-адреса, заголовок ethernet, IP‑заголовок (при наличии).
- in – входящие (из сети) кадры, out – исходящие (в сеть), in* - входящие (из tcp/ip стека ОС, с интерфейса vEth<N>), out* - исходящие (в tcp/ip стек ОС на интерфейс vEth<N>).
- Кадры, отмеченные как in*/out*, можно просмотреть в выводе tcpdump на соответствующем интерфейсе vEth<N>.
- Просмотреть файл ошибок и предупреждений /tmp/ipsm-app/error.log.
- В данный файл попадают следующие ошибки и предупреждения:
- ошибки, возникшие при инициализации ipsm-app;
- ошибки при изменении MTU либо других настроек портов;
- ошибки в конфигурационном файле ipsm_dpdk.cfg;
- ошибки в выделении памяти;
- критические системные ошибки;
- изменения mtu интерфейсов vEth<N> и соответствующих им физических портов;
- Просмотреть файл протоколирования подсистем DPDK, указанный в параметре rte_log_file конфигурационного файла ifaliases.cf.
- Использовать стандартные утилиты DPDK для получения дампа кадров Ethernet (фреймов) в формате .pcap при помощи утилит dpdk-pdump и dpdk-dumpcap.
- Использование механизма “телеметрии”, т.е. скрипта - dpdk-telemetry.py (стандартный для DPDK интерфейс сбора статистики).
- Использование утилиты dpdk-proc-info. Средствами данной утилиты возможно извлекать статистику порта, сбрасывать статистику порта, печатать информацию о памяти DPDK и отображать отладочную информацию для порта.