This is an old revision of the document!
Table of Contents
Общая информация
Устройство МКСЗ «Diamond Next» поддерживает возможность захватывать сетевой трафик для дальнейшего анализа. Данный механизм позволяет проанализировать сетевые пакеты и их заголовки. Захват и анализ сетевого трафика можно осуществить в двух режимах: raw-режим, pcap-режим.
- Raw-режим: Данный режим позволяет захватить сетевой пакет и предоставить информацию не только о всех полях и заголовках, но также и о движении сетевого пакета между сетевыми механизмами устройства. Данный режим осуществляет захват сетевого трафика со всех интерфейсов одновременно. Результаты работы можно сохранить в текстовом формате.
- Pcap-режим: Данный режим позволяет захватить сетевой пакет и предоставить информацию аналогично утилите tcpdump. Сетевой трафик можно захватывать на различных сетевых интерфейсах и записывать результаты работы в формате pcap файла. В pcap-режиме не поддерживается возможность онлайн вывода результатов работы механизма и недоступна фильтрации сетевого трафика по различным параметрам.
Режим захвате RAW
Для захвата сетевого трафик на физическом интерфейсе необходимо подключиться подключиться к устройству по протоколу ssh. Далее необходимо перейти в режим конфигурации на уровне “data plane” с помощью команды “vppctl”.
Необходимо выбрать один из сетевых интерфейсов, на котором требуется осуществить захват сетевого трафика. Перечень доступных сетевых интерфейсов на устройстве можно посмотреть либо через web интерфейс в разделе “Статус - Сетевые интерфейсы”, либо в режиме конфигурации на уровне “data plane” с помощью команды “sh interface”.
Для захвата сетевого трафика необходимо использовать команду “trace add dpdk-input <count_of_packets>”.
# vppctl vpp# trace add dpdk-input 1000 <----- 1000 Количество сетевых пакетов
Для просмотра результата необходимо выполнить команду “show trace”. В представленном ниже примере показаны сетевые пакет 16 и 17. Для каждого из сетевых пакетов зафиксированы узлы, в которых происходила их обработка, все поля и заголовки, а также результат обработки сетевого пакета.
Packet 16 01:16:54:208566: dpdk-input GigabitEtherneta/0/0 rx queue 0 buffer 0x2cff11: current data 0, length 70, buffer-pool 0, ref-count 1, trace handle 0x100000f ext-hdr-valid PKT MBUF: port 6, nb_segs 1, pkt_len 70 buf_len 9328, data_len 70, ol_flags 0x182, data_off 128, phys_addr 0xd33fc4c0 packet_type 0x111 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x94cebe20 fdir.hi 0x0 fdir.lo 0x94cebe20 Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid PKT_RX_RSS_HASH (0x0002) RX packet with RSS hash result Packet Types RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers RTE_PTYPE_L4_TCP (0x0100) TCP packet IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 TCP: 81.177.120.83 -> 194.135.68.242 tos 0x20, ttl 52, length 52, checksum 0xa325 dscp CS1 ecn NON_ECN fragment id 0xd200, flags DONT_FRAGMENT TCP: 50706 -> 443 seq. 0xad1c6b3b ack 0x19461f07 flags 0x10 ACK, tcp header: 32 bytes window 360, checksum 0x6aff 01:16:54:208567: ethernet-input frame: flags 0x3, hw-if-index 7, sw-if-index 7 IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 01:16:54:208568: l2-input l2-input: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 [l2-input-feat-arc l2-learn l2-fwd l2-flood l2-flood ] 01:16:54:208568: l2-input-feat-arc IN-FEAT-ARC: head 1 feature_bitmap 82a5 ethertype 800 sw_if_index 7, next_index 15 01:16:54:208568: acl-plugin-in-ip4-l2 acl-plugin: lc_index: 0, sw_if_index 7, next index 1, action: 1, match: acl 0 rule 0 trace_bits 00000000 ct session_index -1 thread_index 65535 error NONE pkt info 0000000000000000 0000000000000000 0000000000000000 f24487c25378b151 0007010601bbc612 0310ffff00000000 lc_index 0 l3 ip4 81.177.120.83 -> 194.135.68.242 l4 lsb_of_sw_if_index 7 proto 6 l4_is_input 1 l4_slow_path 0 l4_flags 0x01 port 50706 -> 443 tcp flags (valid) 10 rsvd 0 01:16:54:208579: l2-input-feat-arc-end IN-FEAT-ARC: head 0 feature_bitmap 2a5 ethertype 0 sw_if_index -1, next_index 7 01:16:54:208579: l2-learn l2-learn: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 01:16:54:208579: l2-fwd l2-fwd: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 result [0xb180000000007, 7] none 01:16:54:208580: error-drop rx:GigabitEtherneta/0/0 01:16:54:208580: drop l2-fwd: Reflection Drop Packet 17 01:16:54:209266: dpdk-input GigabitEtherneta/0/0 rx queue 0 buffer 0x2b73df: current data 0, length 138, buffer-pool 0, ref-count 1, trace handle 0x1000010 ext-hdr-valid PKT MBUF: port 6, nb_segs 1, pkt_len 138 buf_len 9328, data_len 138, ol_flags 0x182, data_off 128, phys_addr 0xd39cf840 packet_type 0x111 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x49de519a fdir.hi 0x0 fdir.lo 0x49de519a Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid PKT_RX_RSS_HASH (0x0002) RX packet with RSS hash result Packet Types RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers RTE_PTYPE_L4_TCP (0x0100) TCP packet IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 TCP: 46.138.254.34 -> 194.135.68.242 tos 0x00, ttl 122, length 120, checksum 0x61c7 dscp CS0 ecn NON_ECN fragment id 0x6a92, flags DONT_FRAGMENT TCP: 58270 -> 873 seq. 0x358e7882 ack 0x1e2c6d5b flags 0x18 PSH ACK, tcp header: 20 bytes window 2052, checksum 0x0bae 01:16:54:209267: ethernet-input frame: flags 0x3, hw-if-index 7, sw-if-index 7 IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 01:16:54:209268: l2-input l2-input: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 [l2-input-feat-arc l2-learn l2-fwd l2-flood l2-flood ] 01:16:54:209268: l2-input-feat-arc IN-FEAT-ARC: head 1 feature_bitmap 82a5 ethertype 800 sw_if_index 7, next_index 15 01:16:54:209268: acl-plugin-in-ip4-l2 acl-plugin: lc_index: 0, sw_if_index 7, next index 1, action: 1, match: acl 0 rule 0 trace_bits 00000000 ct session_index -1 thread_index 65535 error NONE pkt info 0000000000000000 0000000000000000 0000000000000000 f24487c222fe8a2e 000701060369e39e 0318ffff00000000 lc_index 0 l3 ip4 46.138.254.34 -> 194.135.68.242 l4 lsb_of_sw_if_index 7 proto 6 l4_is_input 1 l4_slow_path 0 l4_flags 0x01 port 58270 -> 873 tcp flags (valid) 18 rsvd 0 01:16:54:209279: l2-input-feat-arc-end IN-FEAT-ARC: head 0 feature_bitmap 2a5 ethertype 0 sw_if_index -1, next_index 7 01:16:54:209280: l2-learn l2-learn: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 01:16:54:209280: l2-fwd l2-fwd: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 result [0xb180000000007, 7] none 01:16:54:209280: error-drop rx:GigabitEtherneta/0/0 01:16:54:209280: drop l2-fwd: Reflection Drop
Данный механизм использует буфер для сохранения результатов работы. Чтобы очистить буфер от старых данных и начать новый захват необходимо выполнить команду “clear trace”.
Для сохранения данных в текстовом формате, необходимо вернуть на уровень управления “control-plane” с помощью сочетания клавиш “ctrl+c” и выполнить команду “vppctl show trace max 1000 > /media/storage/trace.log”. Результаты выполнения команды будут сохранены в файл “trace.log” в папке назначения “/media/storage/”. Название файла и директорию назначения можно задать самостоятельно.
Режим захвате Pcap
Для захвата сетевого трафик на сетевом интерфейсе необходимо подключиться подключиться к устройству по протоколу ssh. Далее необходимо перейти в режим конфигурации на уровне “data plane” с помощью команды “vppctl”.
Необходимо выбрать один из сетевых интерфейсов, на котором требуется осуществить захват сетевого трафика. Перечень доступных сетевых интерфейсов на устройстве можно посмотреть либо через web интерфейс в разделе “Статус - Сетевые интерфейсы”, либо в режиме конфигурации на уровне “data plane” с помощью команды “sh interface”.
Для захвата сетевого трафика необходимо использовать команду “pcap trace [rx/tx] [on/off] [max_packet_count <nn>] [intfc <interface>|any] [file <name>]”.
- rx/tx - направление сетевого трафика, который необходимо захватить;
- on/off - включить или выключить механизм захвата сетевого трафика;
- max_packet_count - количество сетевых пакетов, которые необходимо захватить;
- intfc - сетевой интерфейс, на котором необходимо осуществить захват сетевого трафика;
- file - имя файла, в который будут сохранены результаты в формате pcap.