Возможности протоколирования и статистики для настройки шлюза

Для получения диагностической информации, статистических данных и сообщений об ошибках рекомендуется выполнить следующие действия:

·       Вручную запустить перехватчик 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, отличное от 0x0800 (IPv4), 0x0806 (ARP) и не указанное в параметре allowed_ethertypes.

d10 – фреймы, отброшенные при получении с виртуального интерфейса vEthN, если ему соответствует порт LAN.

d11 – фреймы, полученные на порту WAN либо полученные из стека ОС на виртуальный интерфейс vEthN, отброшенные механизмом фильтрации по vlan id.

Информация о текущем статусе порта, включающая 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, заголовок IPv4 (при наличии).

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.