12.1. Packet Tracer¶
Трассировщик пакетов (packet tracer) позволяет увидеть, через какие подсистемы vCGNAT прошли входящие и исходящие пользовательские пакеты. Это мощная утилита, которая может помочь c диагностикой нетривиальных или трудноанализируемых проблем.
Настройка трассировщика выполняется в несколько шагов:
Создается ACL-лист.
Создается трассировщик пакетов.
Запускается запись трейса в pcap-файл.
Рассмотрим подробнее каждый из шагов.
- ip dp-access-list NAME SEQ ACTION <any|udp|tcp|icmp|gre|esp> src-ip <any|A.B.C.D/M> dst-ip <any|A.B.C.D/M>¶
Создать ACL-лист для IPv4.
Необходимо помнить о том, что балансировщик работает в режиме Destination NAT. Это значит, что в пакетах, отправляемых клиентом, в качестве dst-ip указан IP-адрес Сервиса. После обработки данных пакетов балансировщиком dst-ip подменяется на один из IP-адресов Worker. Если же используется NAT-пул, то в запросе от балансировщика к Worker подменяется src-ip клиента на IP-адрес из пула.
Все это следует учитывать при написании правила для access-листа.
Самый простой ACL-лист, где в качестве src-ip и dst-ip указан параметр any. Минус в том, что будут сниматься все пакеты, проходящие через балансировщик, что в случае большого количества трафика может усложнить анализ собранного дампа.
Если в качестве dst-ip указать IP-адрес Сервиса, то пакеты будут собраны только на промежутке от клиента до балансировщика. Для того, что собрать в дамп пакеты от балансировщика до Worker, нужно будет создать access-лист с IP-адресом Worker.
Также следует не забывать о access-листе для обратного трафика.
- debug packet-tracer <ip|ipv6> dp-access-list NAME max-packets (2-1048576) [payload-length (16-65535) [<vrf NAME|vrf-all>]]¶
Создать трассировщик пакетов с настроенным access-листом.
max-packets
- максимальное количество пакетов на nb_work ядро, которое будет храниться в трассировке. Можно записать \(N^2 - 1\) пакетов в кольцевую очередь. Например, если вы укажете значение 10, то подсистема трассировки возьмет степень двойки сверху \(2^4 - 1 = 15\) — именно столько пакетов будет записано в трассировку. Если в настройках платформы указано 12 ядер nb_work, то общее количество пакетов будет \(15 * 12 = 180\). Эти пакеты можно просмотреть с помощью командыshow debugging packet-tracer ip traces
, где временная метка характеризует начало пакета.payload-size
— объем данных в байтах, сохраняемый трассировщиком пакетов для каждого пакета. Рекомендуется указать как минимум 1500 байт.vrf-all
— пакеты будут собираться по всем VRF.vrf NAME
— пакеты будут собираться только в указанном VRF.Примечание
Можно создать только один трассировщик пакетов.
- no debug packet-tracer <ip|ipv6> [<vrf NAME|vrf-all>]¶
Удалить созданный трассировщик пакетов.
Внимание
Рекомендуется удалять трассировщик пакетов после окончания анализа для снижения нагрузки на vADC, иначе система будет применять правило access-листа для каждого пакета.
- debug packet-tracer burst-size (1-65535)¶
Указать количество пакетов, которые обработчик будет считывать из очереди за один раз. По умолчанию это 512.
- debug packet-tracer <ip|ipv6> pcap-dump file FILENAME¶
Сбор трассировки в pcap-файл. Когда включен дамп pcap, отдельный поток анализирует очередь в режиме реального времени. Под очередью здесь понимается буфер - максимальное количество одновременных пакетов, хранящихся в памяти vADC до того, как они попадут на диск. В этом случае опция
max-packets
в команде debug packet-tracer не ограничивает количество собираемых пакетов.Внимание
Запись дампа начнется сразу после выполнения команды и не остановится автоматически. Запись необходимо остановить вручную, иначе произойдет переполнение диска! Чем точнее access-лист, тем меньше пакетов будут попадать в дамп, и тем меньше он будет занимать места.
- no debug packet-tracer <ip|ipv6> pcap-dump [file FILENAME]¶
Остановить запись дампа.
12.1.1. Show-команды¶
- show debugging packet-tracer <ip|ipv6> traces [clear]¶
Показать трассировку пакетов. В каждом пакете, попавшим в трассировку, содержится такая информация как заголовки Ethernet и IP, подсистемы, через которые проходят пакеты, и где они были отброшены. Если добавить опцию
clear
, трассировка будет удалена после просмотра.
- show debugging packet-tracer <ip|ipv6> stats [<vrf NAME|vrf-all>]¶
Показать статистику для созданного трассировщика пакетов.