Описание статистики NAT [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:opt_cgnat:cgnat_diagnostics:start [2023/08/24 08:48] – ↷ Страница перемещена из dpi:dpi_options:opt_cgnat:cgnat_diagnostics:start в dpi:opt_cgnat:cgnat_diagnostics:start elena.krasnobryzhdpi:opt_cgnat:cgnat_diagnostics:start [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-====== 4 Описание статистики NAT ====== 
-{{indexmenu_n>4}} 
-Вывод статистики в fastdpi_stat.log задает dbg_log_mask. 
- 
-0x40000   - вывод в alert лог детализации инициализации NAT (профили, белые адреса и прочее) \\ 
-0x100000  - вывод статистики по блокам белых адресов (если задано 0x2000000) \\ 
-0x2000000 - вывод статистики по NAT. 
- 
-**Пример:** \\ 
-dbg_log_mask=0x2000000  
- 
-==== Общее для всех профилей ==== 
-<code> 
-[STAT    ][2021/12/22-17:33:17:513859] NAT statistics : itrnsl=0, iprof=2, profile 'cgnat', nttype=0, ref_cnt=1, cidr=94.140.198.84/30 
-[STAT    ][2021/12/22-17:33:17:513869] NAT statistics : itrnsl=1, iprof=3, profile 'nat1_1', nttype=1, ref_cnt=1, cidr=16.35.121.0/24 
- 
-    itrnsl  - внутренний индекс преобразователя серый <--> белый профиля. 
-    iprof   - внутренний индекс профиля 
-    profile - имя профиля 
-    nttype  - тип профиля (0 - cgnat, 1 - 1:1) 
-    ref_cnt - счетчик ссылок использования преобразователя профилями  
-    (Профили могут использовать один набор бесклассовых IP сетей, но разное количество ограничений на сессии) 
-    cidr    - список бесклассовых белых адресов профиля  
-</code> 
- 
-==== Профиль CG-NAT ====  
-<code> 
-[STAT    ][2021/12/22-17:33:19:252622] NAT statistics : itrnsl=0, iprof=2, profile 'cgnat', nttype=0, ref_cnt=1, cidr=94.140.198.84/30 
-        k=0, itrnsld=0, cidr=94.140.198.84/30 
-                total  TCP : 30/20/0/7/17/ 0/0/0 50/20/0/50/0 5516/8/121 
-                actual TCP : 0/0/0/0/0 0/0/0 0/0/0/0/0 0/0/0 
-                total  UDP : 13/4/0/13/1/ 0/0/0 17/4/11/17/0 28/1/3 
-                actual UDP : 0/0/0/0/0 0/0/0 0/0/0/0/0 0/0/0 
-                total GRE : 0/0 
-</code> 
- 
-==== Информация по преобразователю данных ==== 
-<code> 
-        k=0, itrnsld=0, cidr=94.140.198.84/30 
-    k       - номер itrnsld 
-    itrnsld - внутренний индекс данных преобразователя - того, кто обслуживает бесклассовые IP сети 
-    cidr    - конкретная бесклассовая IP сеть 
- 
-    total   - суммарная статистика 
-    actual  - статистика изменений счетчиков за период вывода статистики (параметр delta_alarm, default 15 секунд)  
- 
-    total  TCP : 30/20/0/7/17 0/0/0 50/20/0/50/0 5516/8/121 
-</code> 
- 
-**Четыре группы:** \\ 
-1 группа -- операции с портами белых адресов 
-<code> 
-30/20/0/7/17: 
- 
-30 - выделение нового белого порта  
-20 - повторное использование белого порта  
-0  - ошибки получения нового белого порта 
-7  - выполняет декремент количества сессий абонента по освобождению flow 
-17 - выполняет декремент количества сессий абонента по повторному использованию белого порта 
-</code> 
- 
-2 группа -- общая статистика 
-<code> 
-0/0/0: 
- 
-0 - раcсчитали CRC по IP при обращении для выделения белого адреса. Должно быть == 0  
-0 - превышение количества сессий для абонентов 
-0 - разные белые адреса в flow и преобразователях - Должно быть == 0 
-</code> 
- 
-3 группа -- статистика по кэшу //серый --> белый// 
-<code> 
-50/20/0/50/0: 
- 
-50 - добавлено записей в кэш 
-20 - удалено записей из кэша 
-0  - найдено записей в кэше при выделении нового белого порта 
-50 - не найдено по серому белый адрес 
-0  - ошибки добавления в кэш 
-</code> 
- 
-4 группа -- статистика преобразования //белый --> серый// (//inet-->subs//) 
-<code> 
-5516/8/121:  
- 
-5516 - успешно проведена трансляция белый --> серый 
-8    - порт не попадает в выделенный диапазон белых портов 
-121  - не найдена трансляция белый --> серый 
-</code> 
- 
-Для TCP/UDP и total/actual статистика одинаковая. 
- 
-Для GRE - это GRE по умолчанию (когда не смогли в туннельном протоколе "точка-точка" найти сессию). На белый адрес может быть создана только одна такая сессия. 
-<code> 
-total GRE : 0/0 
-0 - использован адрес  
-0 - количество попыток создания сессий на уже занятый белый адрес 
-</code> 
- 
-==== Профиль 1:1 ==== 
-<code> 
-[STAT    ][2021/12/22-17:17:28:749622] NAT statistics : itrnsl=1, iprof=3, profile 'nat1_1', nttype=1, ref_cnt=1, cidr=16.35.121.0/24 
-        k=0, itrnsld=1, cidr=16.35.121.0/24 
-                total 256/256/0/0/0/0 0/0 
-</code> 
- 
-Статистика 2 группы: \\ 
-1 группа - 256/256/0/0/0/0 \\ 
-2 группа - 0/0 
- 
-**Пример:** \\ 
-dbg_log_mask=0x2100000  
- 
-==== Вывод статистики по белым адресам ==== 
-<code> 
-[STAT    ][2021/12/22-21:14:48:385991] NAT statistics : itrnsl=0, iprof=2, profile 'cgnat', nttype=0, ref_cnt=1, cidr=94.140.198.84/30 
-        k=0, itrnsld=0, cidr=94.140.198.84/30 
-                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, nwhaddr=2 
-                                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 
-</code> 
-<code> 
-TCP whiteblck ip_mask=0x0, nwhaddr=2 : 
- 
-    ip_mask - маска адресов  
-    nwhaddr - количество белых адресов, которые попадают под маску 
-</code> 
-<code> 
-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% - процент занятости блоков 
-</code> 
- 
-=== Добавлено в версии 12.1.0 === 
-<code> 
-whp_salfs - сколько портов в 'короткой' очереди 
-whp_lalfs - сколько портов в 'длинной' очереди 
-whp_ruse  - сколько портов может быть использовано повторно 
-whp_ruse_salfs - сколько портов может быть использовано повторно из 'короткой' очереди 
-whp_ruse_lalfs - сколько портов может быть использовано повторно из 'длинной' очереди 
-whp_dthr - сколько портов созданы в одном рабочем потоке, но использовались в другом 
-whp_dthr_salfs - сколько портов созданы в одном рабочем потоке, но использовались в другом из 'короткой' очереди 
-whp_dthr_lalfs - сколько портов созданы в одном рабочем потоке, но использовались в другом из 'длинной' очереди 
-</code> 
- 
-В рамках белого адреса видно распределение захваченных портов/блоков по рабочим потокам 
-<code> 
-thr=0, ublock=1, uport=0 
-thr=0    - номер рабочего потока 
-ublock=1 - использовано блоков белых портов  
-uport=0  - использовано блоков белых портов 
-</code> 
-<code> 
-thr_salfs - сколько портов в 'короткой' очереди 
-thr_lalfs - сколько портов в 'длинной' очереди 
-thr_ruse  - сколько портов может быть использовано повторно 
-thr_ruse_salfs - сколько портов может быть использовано повторно из 'короткой' очереди 
-thr_ruse_lalfs - сколько портов может быть использовано повторно из 'длинной' очереди 
-thr_dthr - сколько портов созданы в одном рабочем потоке, но использовались в другом 
-thr_dthr_salfs - сколько портов созданы в одном рабочем потоке, но использовались в другом из 'короткой' очереди 
-thr_dthr_lalfs - сколько портов созданы в одном рабочем потоке, но использовались в другом из 'длинной' очереди 
-</code> 
- 
-Формат вывода сохранился 
-<code> 
-fdpi_ctrl list status --service 11 --ip 192.168.4.20 
-Autodetected fastdpi params : dev='em1', port=29001 
-connecting 94.140.198.68:29001 ... 
- 
-================================ 
-192.168.4.20    crcip=0xd649d853        nttype=0        profile='cgnat' itrnsl=0 itrnsld=0       whiteip=94.140.198.86   sess_tcp=127    sess_udp=108   indmtd=4 
-</code> 
- 
-**Вывод:** 
-<code> 
-192.168.4.20 - серый IP 
-crcip=0xd649d853 - CRC серого IP 
-nttype=0        - тип NAT: 0 - cgnat, 1 - 1:1 
-profile='cgnat' - имя профиля 
-itrnsl=0 - внутренний индекс преобразователя серый <--> белый профиля. 
-itrnsld=0        - внутренний индекс данных преобразователя  
-whiteip=94.140.198.86 - белый адрес 
-sess_tcp=127    - количество сессий TCP 
-sess_udp=108    - количество сессий UDP 
-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  | jq . 
- 
-fdpi_ctrl list all status --service 11 
-fdpi_ctrl list all status --service 11 --outformat=json 
-</code> 
-Формат аналогично 
- 
-=== Легенда команды просмотра статистики NAT профиля через fdpi_ctrl === 
-Команда: 
-<code> 
-fdpi_ctrl list status --service 11 --profile.name cgnat 
-</code> 
-Вывод: 
-<code> 
-nttype=0        profile='test_nat_cgnat'        itrnsl=0        nitrnsld=1 
-        itrnsld=0       cidr=94.140.198.84/30 
-                proto=TCP       ip_mask=0x0     nwhaddr=2 
-                        proto=TCP       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%     whp_salfs=0     whp_lalfs=0     whp_ruse=0      whp_ruse_salfs=0        whp_ruse_lalfs=0        whp_dthr=0      whp_dthr_salfs=0        whp_dthr_lalfs=0 
-                                nthr=0  ublock=1        uport=0 thr_salfs=0     thr_lalfs=0     thr_ruse=0      thr_ruse_salfs=0        thr_ruse_lalfs=0        thr_dthr=0      thr_dthr_salfs=0        thr_dthr_lalfs=0 
-                                nthr=1  ublock=1        uport=0 thr_salfs=0     thr_lalfs=0     thr_ruse=0      thr_ruse_salfs=0        thr_ruse_lalfs=0        thr_dthr=0      thr_dthr_salfs=0        thr_dthr_lalfs=0 
-</code> 
-Легенда: 
-<code> 
-nttype         - тип профиля (0 - cgnat, 1 - 1:1) 
-profile        - имя профиля 
-itrnsl         - внутренний индекс преобразователя серый<-->белый профиля 
-nitrnsld       - количество данных преобразователей профиля (количество бесклассовых IP сетей) 
-itrnsld        - внутренний индекс данных преобразователя - того, кто обслуживает бесклассовые IP сетеи 
-cidr           - конкретная бесклассовая IP сеть 
-proto          - протокол TCP/UDP 
-ip_mask        - маска адресов 
-nwhaddr        - количество белых адресов, которые попадают под маску или под CRC (зависит от параметра rx_dispatcher) 
-whip           - белый адрес 
-sb             - размер блока выделяемых портов. 
-lsb            - размер последнего блока 
-nb             - количество блоков портов 
-whpa           - всего портов 
-whpb           - занято портов 
-whpf           - свободно портов 
-awhb           - выдано блоков 
-fwhb           - свободно блоков 
-puwhb          - процент занятости блоков 
-whp_salfs      - находится в 'короткой' очереди 
-whp_lalfs      - находится в 'длинной' очереди 
-whp_ruse       - может быть использовано 
-whp_ruse_salfs - может быть использовано в 'короткой' очереди 
-whp_ruse_lalfs - может быть использовано в 'длинной' очереди 
-whp_dthr       - количество элементов ithr_owner != ithr по очередям 
-whp_dthr_salfs - количество элементов ithr_owner != ithr по 'short' очереди 
-whp_dthr_lalfs - количество элементов ithr_owner != ithr по 'long' очереди 
-</code> 
- 
-=== Легенда команды просмотра статистики dump NAT профиля === 
-Команда: 
-<code> 
-fdpi_cli -r 127.0.0.1:29001 nat dump whaddr queue test_nat_cgnat 
-</code> 
-Вывод: 
-<code> 
-profile='test_nat_cgnat' itrnsl=0 
-        cidr='94.140.198.84/30' itrnsld=0 
-                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, graddr=192.168.4.20:60637 tml='2023/03/06 16:28:09, -00:00:10.657 (7472516905147512 ticks)', lifetime=120, canreuse=0, ialf=1, imtd=516, iown=2, ilst=2, subproto=0, decr_sess=0, ind_gcache_slice=1, igcache=40 
-                                        sind=130, inext=151, iprev=148, whport=1153, graddr=192.168.4.20:52553 tml='2023/03/06 16:27:50, -00:00:29.455 (7472459405058624 ticks)', lifetime=30, canreuse=0, ialf=0, imtd=516, iown=2, ilst=2, subproto=0, decr_sess=0, ind_gcache_slice=1, igcache=1 
-</code> 
-Легенда: 
-<code> 
-profile        - имя профиля 
-itrnsl         - внутренний индекс преобразователя серый <--> белый профиля 
- 
-cidr           - конкретная бесклассовая IP сеть 
-itrnsld        - внутренний индекс данных преобразователя - того, кто обслуживает бесклассовую IP сеть 
- 
-whip           - белый адрес 
-proto          - протокол TCP/UDP 
-</code> 
-Реализация очереди используемых портов для белых адресов использует один массив - назовем его WHP, размером 0xffff. На его основе построен список используемых портов для рабочего потока. 
-Индекс 0 - используется как заглушка (пусто). 
- 
-Очереди потоков нельзя вывести в виде списка, так как в процессе происходит перемещение записей в очереди, из-за чего вывод может зациклиться. Поэтому массив WHP выводится as is для занятых записей. 
-<code> 
-entryp : задает точки входа в список белых портов рабочего потока 
- ithr   - номер рабочего потока 
- ihead  - вершина списка 
- itail  - последний элемент списка 
-</code> 
-<code> 
-data : данные массива белых портов WHP (выводятся только занятые записи) 
- 
- sind - индекс записи 
- inext            - индекс след. записи 
- iprev            - индекс пред. записи 
-  
- whport           - белый порт 
- graddr           - серый адрес, которому назначен белый адрес 
- tml              - время последнего обращения к записи  
- lifetime         - тайм-аут в секундах время жизни записи (зависит от параметров для short/long очереди) 
- canreuse         - признак, что запись может быть использована повторно 
- ialf             - номер очереди обработки: 
- en_nalfs_shrt = 0,  # очередь с коротким временем жизни 
- en_nalfs_long = 1,  # долгоиграющая очередь  
- indmtd           - внутренний индекс данных абонента (метаданных абонента) 
- iown             - поток-владелец, который породил запись.  
- ilst             - номер потока, который последний обращался к записи 
- subproto         - для какого протокола выделена запись из UDP 
- typedef enum en_nat_borrw_udp: u_int8_t 
- { 
- ennatborwu_ORG     = 0, # UDP/TCP 
- ennatborwu_DFLTGRE = 1, # общий GRE  
- ennatborwu_MAX     = 2, # ICMP 
- } en_nat_borrw_udp_t; 
-     
- decr_sess        - признак, что произошел декремент счетчика использования порта на сером адресе. 
- ind_gcache_slice - индекс кэше-slice перекодировки 'серый --> белый' 
- igcache          - индекс в соответствующем кэше-slice перекодировки 'серый --> белый'  
-</code> 
- 
-==== Мониторинг свободных/занятых портов на белых адресах ==== 
- 
-Превентивный мониторинг позволит избежать проблем нехватки свободных портов и соответсвенно невозможности создания новый сессий, 
-выделив дополнительные блоки белых адресов или уменьшив лимиты выделения портов при исчерпании ресурсов в текущем пуле. 
- 
-свободно портов на белом адресе = whpf (не распределены) + whp_ruse (готовы к переиспользованию) 
-занято портов на белом адресе = whph (распределены) - whp_ruse (готовы к переиспользованию)