Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| dpi:opt_cgnat:cgnat_diagnostics [2023/08/24 08:48] – ↷ Страница перемещена из dpi:dpi_options:opt_cgnat:cgnat_diagnostics в dpi:opt_cgnat:cgnat_diagnostics elena.krasnobryzh | dpi:opt_cgnat:cgnat_diagnostics [2024/10/16 13:14] (текущий) – [Вывод статистики по белым адресам] elena.krasnobryzh | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== 4 Описание статистики NAT ====== | + | ====== |
| + | {{indexmenu_n> | ||
| + | Вывод статистики NAT возможен в stat_log и через fdpi_ctrl.\\ | ||
| + | Вывод информации по очередям возможно сделать dump NAT профиля через fdpi_cli. | ||
| + | |||
| + | |||
| + | ===== Вывод статистики в fastdpi_stat.log ===== | ||
| + | Задается с помощью параметра '' | ||
| + | Для применения требуется релоад сервиса: | ||
| + | **Пример: | ||
| + | dbg_log_mask=0x2000000 | ||
| + | |||
| + | 0x40000 | ||
| + | 0x100000 | ||
| + | 0x2000000 - вывод статистики по NAT. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Общее для всех | ||
| + | < | ||
| + | [STAT ][2021/ | ||
| + | [STAT ][2021/ | ||
| + | |||
| + | itrnsl | ||
| + | iprof - внутренний индекс профиля | ||
| + | profile - имя профиля | ||
| + | nttype | ||
| + | ref_cnt - счетчик ссылок использования преобразователя профилями | ||
| + | (Профили могут использовать один набор бесклассовых IP сетей, но разное количество ограничений на сессии) | ||
| + | cidr - список бесклассовых белых адресов профиля | ||
| + | </ | ||
| + | |||
| + | ==== Профиль CG-NAT ==== | ||
| + | < | ||
| + | [STAT ][2021/ | ||
| + | k=0, itrnsld=0, cidr=94.140.198.84/ | ||
| + | total TCP : 30/ | ||
| + | actual TCP : 0/0/0/0/0 0/0/0 0/0/0/0/0 0/0/0 | ||
| + | total UDP : 13/ | ||
| + | actual UDP : 0/0/0/0/0 0/0/0 0/0/0/0/0 0/0/0 | ||
| + | total GRE : 0/0 | ||
| + | </ | ||
| + | |||
| + | ==== Информация по преобразователю данных ==== | ||
| + | < | ||
| + | k=0, itrnsld=0, cidr=94.140.198.84/ | ||
| + | k - номер itrnsld | ||
| + | itrnsld - внутренний индекс данных преобразователя - того, кто обслуживает бесклассовые IP сети | ||
| + | cidr - конкретная бесклассовая IP сеть | ||
| + | |||
| + | total - суммарная статистика | ||
| + | actual | ||
| + | |||
| + | total TCP : 30/ | ||
| + | </ | ||
| + | |||
| + | **Четыре группы: | ||
| + | 1 группа -- операции с портами белых адресов | ||
| + | < | ||
| + | 30/ | ||
| + | |||
| + | 30 - выделение нового белого порта | ||
| + | 20 - повторное использование белого порта | ||
| + | 0 - ошибки получения нового белого порта | ||
| + | 7 - выполняет декремент количества сессий абонента по освобождению flow | ||
| + | 17 - выполняет декремент количества сессий абонента по повторному использованию белого порта | ||
| + | </ | ||
| + | |||
| + | 2 группа -- общая статистика | ||
| + | < | ||
| + | 0/0/0: | ||
| + | |||
| + | 0 - раcсчитали CRC по IP при обращении для выделения белого адреса. Должно быть == 0 | ||
| + | 0 - превышение количества сессий для абонентов | ||
| + | 0 - разные белые адреса в flow и преобразователях - Должно быть == 0 | ||
| + | </ | ||
| + | |||
| + | 3 группа -- статистика по кэшу // | ||
| + | < | ||
| + | 50/ | ||
| + | |||
| + | 50 - добавлено записей в кэш | ||
| + | 20 - удалено записей из кэша | ||
| + | 0 - найдено записей в кэше при выделении нового белого порта | ||
| + | 50 - не найдено по серому белый адрес | ||
| + | 0 - ошибки добавления в кэш | ||
| + | </ | ||
| + | |||
| + | 4 группа -- статистика преобразования // | ||
| + | < | ||
| + | 5516/8/121: | ||
| + | |||
| + | 5516 - успешно проведена трансляция белый --> серый | ||
| + | 8 - порт не попадает в выделенный диапазон белых портов | ||
| + | 121 - не найдена трансляция белый --> серый | ||
| + | </ | ||
| + | |||
| + | Для TCP/UDP и total/ | ||
| + | |||
| + | Для GRE - это GRE по умолчанию (когда не смогли в туннельном протоколе " | ||
| + | < | ||
| + | total GRE : 0/0 | ||
| + | 0 - использован адрес | ||
| + | 0 - количество попыток создания сессий на уже занятый белый адрес | ||
| + | </ | ||
| + | |||
| + | ==== Профиль 1:1 ==== | ||
| + | < | ||
| + | [STAT ][2021/ | ||
| + | k=0, itrnsld=1, cidr=16.35.121.0/ | ||
| + | total 256/ | ||
| + | </ | ||
| + | |||
| + | Статистика 2 группы: | ||
| + | 1 группа - 256/ | ||
| + | 2 группа - 0/0 | ||
| + | |||
| + | **Пример: | ||
| + | dbg_log_mask=0x2100000 | ||
| + | |||
| + | ==== Вывод статистики по белым адресам ==== | ||
| + | < | ||
| + | [STAT ][2021/ | ||
| + | k=0, itrnsld=0, cidr=94.140.198.84/ | ||
| + | total TCP : 26/4/0/4/2/ 0/0/0 30/4/0/30/0 3045/1/36 | ||
| + | actual TCP : 0/0/0/0/0 0/0/0 0/0/0/0/0 0/0/0 | ||
| + | TCP whiteblck ip_mask=0x0, | ||
| + | whip=94.140.198.84 : sb=64, lsb=64, nb=1008, whpa=64512, whpb=0, whpf=64512, awhb=4, fwhb=1004, puwhb=0.40% | ||
| + | thr=0, ublock=1, uport=0 | ||
| + | thr=1, ublock=1, uport=0 | ||
| + | thr=2, ublock=1, uport=0 | ||
| + | thr=3, ublock=1, uport=0 | ||
| + | whip=94.140.198.86 : sb=64, lsb=64, nb=1008, whpa=64512, whpb=26, whpf=64486, awhb=4, fwhb=1004, puwhb=0.40% | ||
| + | thr=0, ublock=1, uport=0 | ||
| + | thr=1, ublock=1, uport=0 | ||
| + | thr=2, ublock=1, uport=13 | ||
| + | thr=3, ublock=1, uport=13 | ||
| + | </ | ||
| + | < | ||
| + | TCP whiteblck ip_mask=0x0, | ||
| + | |||
| + | ip_mask - маска адресов | ||
| + | nwhaddr - количество белых адресов, | ||
| + | </ | ||
| + | < | ||
| + | whip=94.140.198.84 : sb=64 ( 64 ), nb=1008, whpa=64512, whpb=0, whpf=64512, awhb=4, fwhb=1004, puwhb=0.40% | ||
| + | |||
| + | whip=94.140.198.84 - белый адрес | ||
| + | sb=64 - размер блока портов | ||
| + | lsb=64 | ||
| + | nb=1008 | ||
| + | whpa=64512 | ||
| + | whpb=0 | ||
| + | whpf=64512 | ||
| + | awhb=4 | ||
| + | fwhb=1004 | ||
| + | puwhb=0.40% - процент занятости блоков | ||
| + | </ | ||
| + | |||
| + | === Добавлено в версии 12.1.0 === | ||
| + | < | ||
| + | whp_salfs - сколько портов в ' | ||
| + | whp_lalfs - сколько портов в ' | ||
| + | whp_ruse | ||
| + | whp_ruse_salfs - сколько портов может быть использовано повторно из ' | ||
| + | whp_ruse_lalfs - сколько портов может быть использовано повторно из ' | ||
| + | whp_dthr - сколько портов созданы в одном рабочем потоке, | ||
| + | whp_dthr_salfs - сколько портов созданы в одном рабочем потоке, | ||
| + | whp_dthr_lalfs - сколько портов созданы в одном рабочем потоке, | ||
| + | </ | ||
| + | |||
| + | В рамках белого адреса видно распределение захваченных портов/ | ||
| + | < | ||
| + | thr=0, ublock=1, uport=0 | ||
| + | thr=0 - номер рабочего потока | ||
| + | ublock=1 - использовано блоков белых портов | ||
| + | uport=0 | ||
| + | </ | ||
| + | < | ||
| + | thr_salfs - сколько портов в ' | ||
| + | thr_lalfs - сколько портов в ' | ||
| + | thr_ruse | ||
| + | thr_ruse_salfs - сколько портов может быть использовано повторно из ' | ||
| + | thr_ruse_lalfs - сколько портов может быть использовано повторно из ' | ||
| + | thr_dthr - сколько портов созданы в одном рабочем потоке, | ||
| + | thr_dthr_salfs - сколько портов созданы в одном рабочем потоке, | ||
| + | thr_dthr_lalfs - сколько портов созданы в одном рабочем потоке, | ||
| + | </ | ||
| + | |||
| + | Формат вывода сохранился | ||
| + | < | ||
| + | fdpi_ctrl list status --service 11 --ip 192.168.4.20 | ||
| + | Autodetected fastdpi params : dev=' | ||
| + | connecting 94.140.198.68: | ||
| + | |||
| + | ================================ | ||
| + | 192.168.4.20 | ||
| + | </ | ||
| + | |||
| + | **Вывод: | ||
| + | < | ||
| + | 192.168.4.20 - серый IP | ||
| + | crcip=0xd649d853 - CRC серого IP | ||
| + | nttype=0 | ||
| + | profile=' | ||
| + | itrnsl=0 - внутренний индекс преобразователя серый <--> белый профиля. | ||
| + | itrnsld=0 | ||
| + | whiteip=94.140.198.86 - белый адрес | ||
| + | sess_tcp=127 | ||
| + | sess_udp=108 | ||
| + | indmtd=4 | ||
| + | |||
| + | fdpi_ctrl list status --service 11 --ip 192.168.4.20 --outformat=json | ||
| + | fdpi_ctrl list status --service 11 --ip 192.168.4.20 --outformat=json | ||
| + | |||
| + | fdpi_ctrl list all status --service 11 | ||
| + | fdpi_ctrl list all status --service 11 --outformat=json | ||
| + | </ | ||
| + | Формат аналогично | ||
| + | |||
| + | ===== Легенда команды просмотра статистики NAT профиля через fdpi_ctrl ===== | ||
| + | Команда: | ||
| + | < | ||
| + | fdpi_ctrl list status --service 11 --profile.name cgnat | ||
| + | </ | ||
| + | Вывод: | ||
| + | < | ||
| + | nttype=0 | ||
| + | itrnsld=0 | ||
| + | proto=TCP | ||
| + | proto=TCP | ||
| + | nthr=0 | ||
| + | nthr=1 | ||
| + | </ | ||
| + | Легенда: | ||
| + | < | ||
| + | nttype | ||
| + | profile | ||
| + | itrnsl | ||
| + | nitrnsld | ||
| + | itrnsld | ||
| + | cidr - конкретная бесклассовая IP сеть | ||
| + | proto - протокол TCP/UDP | ||
| + | ip_mask | ||
| + | nwhaddr | ||
| + | whip - белый адрес | ||
| + | sb - размер блока выделяемых портов. | ||
| + | lsb - размер последнего блока | ||
| + | nb - количество блоков портов | ||
| + | whpa - всего портов | ||
| + | whpb - занято портов | ||
| + | whpf - свободно портов | ||
| + | awhb - выдано блоков | ||
| + | fwhb - свободно блоков | ||
| + | puwhb - процент занятости блоков | ||
| + | whp_salfs | ||
| + | whp_lalfs | ||
| + | whp_ruse | ||
| + | whp_ruse_salfs - может быть использовано в ' | ||
| + | whp_ruse_lalfs - может быть использовано в ' | ||
| + | whp_dthr | ||
| + | whp_dthr_salfs - количество элементов ithr_owner != ithr по ' | ||
| + | whp_dthr_lalfs - количество элементов ithr_owner != ithr по ' | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | ===== Легенда команды просмотра статистики dump NAT профиля ===== | ||
| + | Команда: | ||
| + | < | ||
| + | fdpi_cli nat dump whaddr queue test_nat_cgnat | ||
| + | </ | ||
| + | Вывод: | ||
| + | < | ||
| + | profile=' | ||
| + | cidr=' | ||
| + | whip=94.140.198.86 | ||
| + | proto=TCP | ||
| + | entryp : | ||
| + | ithr=0, ihead=0, itail=0 | ||
| + | ithr=1, ihead=0, itail=0 | ||
| + | ithr=2, ihead=133, itail=265 | ||
| + | ithr=3, ihead=193, itail=327 | ||
| + | data : | ||
| + | sind=129, inext=257, iprev=258, whport=1152, | ||
| + | sind=130, inext=151, iprev=148, whport=1153, | ||
| + | </ | ||
| + | Легенда: | ||
| + | < | ||
| + | profile | ||
| + | itrnsl | ||
| + | |||
| + | cidr - конкретная бесклассовая IP сеть | ||
| + | itrnsld | ||
| + | |||
| + | whip - белый адрес | ||
| + | proto - протокол TCP/UDP | ||
| + | </ | ||
| + | Реализация очереди используемых портов для белых адресов использует один массив - назовем его WHP, размером 0xffff. На его основе построен список используемых портов для рабочего потока. | ||
| + | Индекс 0 - используется как заглушка (пусто). | ||
| + | |||
| + | Очереди потоков нельзя вывести в виде списка, | ||
| + | < | ||
| + | entryp : задает точки входа в список белых портов рабочего потока | ||
| + | ithr - номер рабочего потока | ||
| + | ihead | ||
| + | itail | ||
| + | </ | ||
| + | < | ||
| + | data : данные массива белых портов WHP (выводятся только занятые записи) | ||
| + | |||
| + | sind - индекс записи | ||
| + | inext | ||
| + | iprev | ||
| + | |||
| + | whport | ||
| + | graddr | ||
| + | tml - время последнего обращения к записи | ||
| + | lifetime | ||
| + | canreuse | ||
| + | ialf - номер очереди обработки: | ||
| + | en_nalfs_shrt = 0, # очередь с коротким временем жизни | ||
| + | en_nalfs_long = 1, # долгоиграющая очередь | ||
| + | indmtd | ||
| + | iown - поток-владелец, | ||
| + | ilst - номер потока, | ||
| + | subproto | ||
| + | typedef enum en_nat_borrw_udp: | ||
| + | { | ||
| + | ennatborwu_ORG | ||
| + | ennatborwu_DFLTGRE = 1, # общий GRE | ||
| + | ennatborwu_MAX | ||
| + | } en_nat_borrw_udp_t; | ||
| + | |||
| + | decr_sess | ||
| + | ind_gcache_slice - индекс кэше-slice перекодировки ' | ||
| + | igcache | ||
| + | </ | ||
| + | |||
| + | ===== Мониторинг свободных/ | ||
| + | |||
| + | Превентивный мониторинг позволит избежать проблем нехватки свободных портов и соответсвенно невозможности создания новый сессий, | ||
| + | выделив дополнительные блоки белых адресов или уменьшив лимиты выделения портов при исчерпании ресурсов в текущем пуле. | ||
| + | |||
| + | **свободно портов на белом адресе** = whpf (не распределены) + whp_ruse (готовы к переиспользованию)\\ | ||
| + | **занято портов на белом адресе** = whpb (распределены) - whp_ruse (готовы к переиспользованию) | ||